javascript – 如何使用JQuery基于关键字将文本插入到数组中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何使用JQuery基于关键字将文本插入到数组中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3580字,纯文字阅读大概需要6分钟。
内容图文
![javascript – 如何使用JQuery基于关键字将文本插入到数组中](/upload/InfoBanner/zyjiaocheng/784/1de851c035bc456da53822452a6ed553.jpg)
在一个Web项目中,我使用jQuery和javascript来构建一个查询字符串供用户在搜索工具中使用.由于这是由用户动态构建的,我从表单中获取字段和值,然后将其添加到数组中,然后将数据推送到ui中的搜索项.
在将此字符串传递给UI之前,我想根据关键字格式化字符串. (例如,如果关键字BETWEEN all caps)在查询中使用括号中的此关键字后面的输入字段(将有两个).如果使用术语CONTAINS,则用星号包围后续字段,依此类推.在JavaScript中有切片功能,允许我在数组中的索引处插入文本.由于我在数组中寻找关键字而不是索引值,因此有另一种功能或方法可以支持这一点.
下面是在搜索项中创建/解析输入字段的代码
//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');
});
提前致谢
更新评论
感谢您的回复以获得更多说明:
1.我希望最好使用jQuery实现这一点,但我并不反对使用javascript,如果jQuery不包含支持此功能的函数.
2& 3.包含将始终具有一个值. where contains将始终有两个.在选择器下拉菜单中更改选择时,将调用函数insertFromField
完整的工作样本可以在这里查看jsFiddle
更改第二个选择器时,您将看到添加的附加输入字段.这是由insertFromField函数触发的.这基本上评估整个div元素并计算输入字段的数量,并相应地添加或删除一个.
我还添加了一些代码,以便您在UI中查看结果.
预期的输出是当使用BETWEEN一词时,在最后两个输入字段的值周围放置括号
所以它看起来像这样:AND地址123主要街道BETWEEN(17 18)
很抱歉没有想到小提琴
解决方法:
你走了:
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);
}
});
}
}
内容总结
以上是互联网集市为您收集整理的javascript – 如何使用JQuery基于关键字将文本插入到数组中全部内容,希望文章能够帮你解决javascript – 如何使用JQuery基于关键字将文本插入到数组中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。