Jquery 自动完成多个值,保留换行符
我将jQueryUI示例中的代码用于多个值。当我尝试插入换行符时,它会允许我,但当我尝试添加新项目时,它会删除换行符。如何保留换行符 参考文献 编辑: 这样做可以得到我想要的,但它会添加搜索文本,也就是说,如果我键入“ja”并单击“Java”,它不仅会添加“Java”,还会添加“jaJava”。如果我可以从$(this).val()中删除搜索词,我可能会得到我想要的。。。有人知道怎么做吗Jquery 自动完成多个值,保留换行符,jquery,jquery-ui,jquery-autocomplete,multiple-value,Jquery,Jquery Ui,Jquery Autocomplete,Multiple Value,我将jQueryUI示例中的代码用于多个值。当我尝试插入换行符时,它会允许我,但当我尝试添加新项目时,它会删除换行符。如何保留换行符 参考文献 编辑: 这样做可以得到我想要的,但它会添加搜索文本,也就是说,如果我键入“ja”并单击“Java”,它不仅会添加“Java”,还会添加“jaJava”。如果我可以从$(this).val()中删除搜索词,我可能会得到我想要的。。。有人知道怎么做吗 select: function (event, ui) { $(this).val($(this
select: function (event, ui) {
$(this).val($(this).val() + ui.item.value);
return false;
}
我能够用这段代码得到我想要的,但是可能还有改进的空间
function removeLastInstance(badtext, str) {
var charpos = str.lastIndexOf(badtext);
if (charpos < 0) return str;
ptone = str.substring(0, charpos);
pttwo = str.substring(charpos + (badtext.length));
return (ptone + pttwo);
}
var sTerm;
$("#propertyInfo, #legalDesc, #taxes, #additionalTaxes, #mortgagesLiensCourt, #additionalMatters, #abstractorComments")
.addClass('shiftTabClass')
.bind("keydown", function (event) {
if (event.keyCode === $.ui.keyCode.TAB &&
$(this).data("ui-autocomplete").menu.active) {
event.preventDefault();
}
})
.autocomplete({
source: function (request, response) {
// delegate back to autocomplete, but extract the last term
var term = extractLast(request.term);
sTerm = term;
var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(term), "i");
//response($.grep(availableTags, function (item) {
response($.grep(textCodes[this.element.attr('id')], function (item) {
return matcher.test(item);
}));
},
focus: function () {
// prevent value inserted on focus
return false;
},
minLength: 1,
select: function (event, ui) {
/*
var terms = split(this.value);
// remove the current input
terms.pop();
// add the selected item
terms.push(formatItem(ui.item.value));
// add placeholder to get the comma-and-space at the end
terms.push("");
this.value = terms.join(" ");
return false;
*/
console.log(sTerm);
$(this).val(removeLastInstance(sTerm, $(this).val()) + ui.item.value);
return false;
}
});
函数removelastance(badtext,str){
var charpos=str.lastIndexOf(badtext);
if(charpos<0)返回str;
ptone=str.substring(0,charpos);
pttwo=str.substring(charpos+(badtext.length));
返回(ptone+pttwo);
}
var sTerm;
美元(“#财产信息,#法律法规,#税收,#附加税,#抵押法院,#附加事项,#抽象义务”)
.addClass('shiftTabClass')
.bind(“键控”,函数(事件){
如果(event.keyCode===$.ui.keyCode.TAB&&
$(this.data(“ui自动完成”).menu.active){
event.preventDefault();
}
})
.自动完成({
来源:功能(请求、响应){
//委托回自动完成,但提取最后一项
var term=extractLast(request.term);
sTerm=术语;
var matcher=newregexp(“^”+$.ui.autocomplete.escapeRegex(术语),“i”);
//响应($.grep)(可用标签、功能(项目){
响应($.grep(textCodes[this.element.attr('id')),函数(项){
返回匹配器测试(项目);
}));
},
焦点:功能(){
//防止在焦点上插入值
返回false;
},
最小长度:1,
选择:功能(事件、用户界面){
/*
var术语=分割(该值);
//删除当前输入
terms.pop();
//添加所选项目
push(formatItem(ui.item.value));
//添加占位符以在末尾获得逗号和空格
术语。推送(“”);
this.value=terms.join(“”);
返回false;
*/
控制台日志(sTerm);
$(this.val)(removelastinance(sTerm,$(this.val())+ui.item.value);
返回false;
}
});
你说的“插入换行符”是什么意思?我有一个文本区域,可以提供自动完成功能。我希望用户能够插入换行符(通过按Enter
键)。他们可以这样做,但当他们添加新的自动完成项时,它会删除换行符。我的编辑让我更靠近了,我想我差不多做到了。。。
function removeLastInstance(badtext, str) {
var charpos = str.lastIndexOf(badtext);
if (charpos < 0) return str;
ptone = str.substring(0, charpos);
pttwo = str.substring(charpos + (badtext.length));
return (ptone + pttwo);
}
var sTerm;
$("#propertyInfo, #legalDesc, #taxes, #additionalTaxes, #mortgagesLiensCourt, #additionalMatters, #abstractorComments")
.addClass('shiftTabClass')
.bind("keydown", function (event) {
if (event.keyCode === $.ui.keyCode.TAB &&
$(this).data("ui-autocomplete").menu.active) {
event.preventDefault();
}
})
.autocomplete({
source: function (request, response) {
// delegate back to autocomplete, but extract the last term
var term = extractLast(request.term);
sTerm = term;
var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(term), "i");
//response($.grep(availableTags, function (item) {
response($.grep(textCodes[this.element.attr('id')], function (item) {
return matcher.test(item);
}));
},
focus: function () {
// prevent value inserted on focus
return false;
},
minLength: 1,
select: function (event, ui) {
/*
var terms = split(this.value);
// remove the current input
terms.pop();
// add the selected item
terms.push(formatItem(ui.item.value));
// add placeholder to get the comma-and-space at the end
terms.push("");
this.value = terms.join(" ");
return false;
*/
console.log(sTerm);
$(this).val(removeLastInstance(sTerm, $(this).val()) + ui.item.value);
return false;
}
});