Javascript 如何使用JQuery将文本插入基于关键字的数组
在一个web项目中,我使用jQuery和javascript构建一个查询字符串,供用户在搜索工具中使用。由于这是由用户动态构建的,因此我从表单中获取字段和值,然后将其添加到数组中,然后将其推送到ui中的搜索词中 在将此字符串传递到UI之前,我希望根据关键字设置字符串的格式。(例如,如果在查询中使用所有大写字母之间的关键字),请将该关键字(将有两个)后面的输入字段括在括号中。如果使用“包含”一词,则用星号等将后续字段括起来。在JavaScript中有一个slice函数,它允许我在数组中的索引处插入文本。因为我在数组中查找关键字,而不是索引值,所以有没有其他函数或方法可以支持这一点 下面是创建/解析搜索词输入字段的代码Javascript 如何使用JQuery将文本插入基于关键字的数组,javascript,jquery,Javascript,Jquery,在一个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> TO </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> "+
"<select class='queryterm' name='condition'>" +
"<option value='address:'>Address</option>" +
"<option value='age:'>Age</option>" +
... edited for Brevity
"</select> <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> <input type='text' class='queryterm' name='fieldValue1' id='fieldvalue1' value='' size='25' /> <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字段)。我还更正了上面的代码,因为值中有一个小的键入错误。