Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 自动完成多个值,保留换行符_Jquery_Jquery Ui_Jquery Autocomplete_Multiple Value - Fatal编程技术网

Jquery 自动完成多个值,保留换行符

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

我将jQueryUI示例中的代码用于多个值。当我尝试插入换行符时,它会允许我,但当我尝试添加新项目时,它会删除换行符。如何保留换行符

参考文献

编辑:

这样做可以得到我想要的,但它会添加搜索文本,也就是说,如果我键入“ja”并单击“Java”,它不仅会添加“Java”,还会添加“jaJava”。如果我可以从$(this).val()中删除搜索词,我可能会得到我想要的。。。有人知道怎么做吗

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;
         }
     });