Javascript 如何使用单个搜索框在两列中搜索?

Javascript 如何使用单个搜索框在两列中搜索?,javascript,dojo,Javascript,Dojo,在我的项目中,我希望在dgrid中按名称和电子邮件查找。到目前为止,我只能按姓名搜索。我使用了以下方法: dgrid.set("query", {name: new RegExp(searchKeyword, 'i')}); 我如何修改它,以便我可以同时通过姓名和电子邮件进行搜索 您尝试在单个文本框中输入两个参数,并希望根据该参数搜索结果。这取决于你,你如何创造逻辑,我尝试了一些东西,希望这将帮助你 我对你的代码做了一些修改,所以我只解释我所做的。这里我用逗号分隔两个搜索值 var keywo

在我的项目中,我希望在dgrid中按名称和电子邮件查找。到目前为止,我只能按姓名搜索。我使用了以下方法:

dgrid.set("query", {name: new RegExp(searchKeyword, 'i')});
我如何修改它,以便我可以同时通过姓名和电子邮件进行搜索


您尝试在单个文本框中输入两个参数,并希望根据该参数搜索结果。这取决于你,你如何创造逻辑,我尝试了一些东西,希望这将帮助你

我对你的代码做了一些修改,所以我只解释我所做的。这里我用逗号分隔两个搜索值

var keywordArr = searchKeyword.split(','); // separate search values by comma
var len = keywordArr.length; 
var query = {}; // search object

if(len>1){ // check whether there is two value or single
  query.name = keywordArr[0];
  if(validateEmail(keywordArr[1])){
    query.email = keywordArr[1];
  } 
} else { // if single value then
  if(validateEmail(searchKeyword)){ // check whether is it email or not
    query.email = searchKeyword;                   
  } else {
    query.name = new RegExp(searchKeyword, 'i');
  }                                                                 
}
dgrid.set("query", query); // search query

// function to validate email id
function validateEmail(email) { 
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
        return re.test(email);
} 
var-keywordArr=searchKeyword.split(',');//用逗号分隔搜索值
var len=关键字arr.length;
变量查询={};//搜索对象
如果(len>1){//检查是否有两个值或单个值
query.name=keywordArr[0];
if(validateEmail(关键字arr[1])){
query.email=keywordArr[1];
} 
}else{//如果是单个值,则
如果(validateEmail(searchKeyword)){//检查是否是电子邮件
query.email=searchKeyword;
}否则{
query.name=newregexp(searchKeyword'i');
}                                                                 
}
dgrid.set(“查询”,query);//搜索查询
//用于验证电子邮件id的函数
功能验证邮件(电子邮件){
变量re=/^([^()[\]\\,;:\s@\“]+(\.[^()[\]\,;:\s@\“]+)*)(\'+\”)(\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[1,3}.[0-9]{1,3}.];
返回重新测试(电子邮件);
} 
你可以试试我的代码。
谢谢

dojo/store/Memory(调用)后面的查询引擎不支持操作,这意味着它无法查询所有记录,其中:

name matches searchterm OR email matches searchterm

要解决这个问题,您必须使用与默认查询引擎不同的查询引擎。目前,Dojo中没有其他可用的查询引擎,但有一个名为资源查询语言的独立项目。您应该检查并打开库本身。

但是我已经测试了它。代码正在工作。我已经在1号rahul,2号用输入测试了3次rahuldesai209@gmail.com3号,拉胡尔和rahuldesai209@gmail.com它给了我结果。做一件事替换
dgrid.set(“query”{name:newregexp(searchKeyword,'i'))}
使用我的codecan,您可以向我提供应用此代码的JSFIDLE url吗?我只需替换
query.name=keywordArr[0]
with
query.name=newregexp(关键字arr[0],'i')测试参数为
rahul-->结果单行
rahuldesai209@gmail.com-->单行
rahul,rahuldesai209@gmail.com-->单行
nilesh,rahuldesai209@gmail.com-->未找到任何结果
嘿,兄弟,我已在不同的系统上测试了此()及其工作正常