Javascript 如何使用JQuery将文本插入基于关键字的数组

Javascript 如何使用JQuery将文本插入基于关键字的数组,javascript,jquery,Javascript,Jquery,在一个web项目中,我使用jQuery和javascript构建一个查询字符串,供用户在搜索工具中使用。由于这是由用户动态构建的,因此我从表单中获取字段和值,然后将其添加到数组中,然后将其推送到ui中的搜索词中 在将此字符串传递到UI之前,我希望根据关键字设置字符串的格式。(例如,如果在查询中使用所有大写字母之间的关键字),请将该关键字(将有两个)后面的输入字段括在括号中。如果使用“包含”一词,则用星号等将后续字段括起来。在JavaScript中有一个slice函数,它允许我在数组中的索引处插入

在一个web项目中,我使用jQuery和javascript构建一个查询字符串,供用户在搜索工具中使用。由于这是由用户动态构建的,因此我从表单中获取字段和值,然后将其添加到数组中,然后将其推送到ui中的搜索词中

在将此字符串传递到UI之前,我希望根据关键字设置字符串的格式。(例如,如果在查询中使用所有大写字母之间的关键字),请将该关键字(将有两个)后面的输入字段括在括号中。如果使用“包含”一词,则用星号等将后续字段括起来。在JavaScript中有一个slice函数,它允许我在数组中的索引处插入文本。因为我在数组中查找关键字,而不是索引值,所以有没有其他函数或方法可以支持这一点

下面是创建/解析搜索词输入字段的代码

//insert field after between option or remove it if it exists
    function insertFromField(param1, param2, param3) {
        if (param1 == "BETWEEN") {
            $("<input class='queryterm' type='text'name='fieldValue1' id='fieldvalue1' value='' size='15' /><span>&nbsp;TO&nbsp;</span>").insertAfter(param2);
        }
        if (param3 <= 2) {
            // do nothing  
        }
        else {
            $(param2).next().remove();
            $(param2).next().remove();
        }
    }

    //build query string from Query Builder  //TODO formatting on string return 
    function setQueryString() {
        checkField();
        var txt = $("input[name='tbsearchterm']");
        var fields = $("#queryFields :input").serializeArray();
        jQuery.each(fields, function (i, field) {
            if (txt) {
                txt.val(txt.val() + field.value + " ");
            }
        });
    }

//the UI contains an add button so the user can build their query at runtime for that i have the following:

$('#add').click(function () {
        $("<div class='additionalrow'><select class='queryterm' name='condition'><option  value='AND'>AND</option><option value='OR'>OR</option></select>&nbsp;&nbsp;"+ 
        "<select class='queryterm' name='condition'>" +
        "<option  value='address:'>Address</option>" +
        "<option  value='age:'>Age</option>" +

... edited for Brevity


        "</select>&nbsp;&nbsp;<select name='operator'class='operClass'><option id='opt1'>Equals</option><option id='opt1' value='CONTAINS'>Contains</option><option id='opt2' value='DOES NOT CONTAIN'>Does Not Contain</option><option id='opt3' value='LIKE'>Like</option><option id='opt4' value='BETWEEN'>Between</option></select>&nbsp;&nbsp;<input type='text' class='queryterm' name='fieldValue1' id='fieldvalue1' value='' size='25' />&nbsp;&nbsp;<a href='#' id='btnRemove'><span class='advButtons'>Remove</span></a></div>").appendTo('#queryFields');
    });
//在between选项后插入字段,如果存在,则将其删除
函数insertFromField(参数1、参数2、参数3){
如果(参数1==“中间”){
$(“TO”)。后面插入(参数2);
}
如果(参数3在这里:

function setQueryString() {
  checkField();
  var txt = $("input[name='tbsearchterm']");
  var hit_between=0;
  var hit_contains=false;
  var ops={
    normal:   ["" ," " ]
    ,contains:["*","* "]
    ,between1:["("," " ]
    ,between2:[" ",") "]
  }
  if (txt) {
    jQuery.each(fields, function (i, field) {
      var v=field.value;
      if (false) {
      }else if (v=="CONTAINS") {
        if (hit_contains==false) {hit_contains=true;return;
        }else{
          //bad input; do something
        }
      }else if (v=="BETWEEEN"){
        if (hit_between==0) {hit_between++;return;
        }else{
          //bad input; do something
        }
      }else{
        var op='normal';
        if (false) {
        }else if (hit_contains)  {hit_contains=false;op='contains';
        }else if (hit_between==1){hit_between++;     op='between1';
        }else if (hit_between==2){hit_between=0;     op='between2';
        }else{
        }
        var nv=ops[op][0]+v+ops[op][1];
        txt.val(txt.val() +nv);
      }
    });
  }
}
Javascripts函数可以通过
如果找到匹配项,an会有一个函数回调。现在需要一个正则表达式来描述搜索词。

问题到底是什么?PS:Jquery是JavaScript。您如何知道包含或介于之间的元素有多少?您还有和/或关键字?您能包括a吗)完整的代码和b)提供一个简单的示例,说明您希望根据表单接收的内容?在您提供的代码中,我无法确定是什么调用insertFromField和setQueryString,并且您有两个同名的select字段(条件)@j08691我已经更新了关于将对象插入数组的问题以及FiddleThank中的完整代码示例。感谢mark我正在尝试解决这个问题,但调试器一直捕捉到一个错误,指出字段未定义。似乎在jQuery开始时就失败了。each()。如果这有助于理解LayoutTanks标记,我还用一个工作示例更新了这个问题。我返回并意识到我省略了序列化行(因此没有定义var字段)。我还更正了上面的代码,因为值中有一个小的键入错误。