自动完成多个以“|”分隔不是“,”

时间:2015-10-05 20:36:13

标签: jquery asp.net-mvc jquery-ui autocomplete

我按照本网站的指示关注所有内容:

http://jqueryui.com/autocomplete/#multiple

除了用“,”分隔的术语,我使用的是字符“|”分开价值观。

$("#txtProjectNameAdd")
        .bind("keydown", function (event) {
            if (event.keyCode === $.ui.keyCode.TAB &&
            $(this).data("autocomplete").menu.active) {
                event.preventDefault();
            }
        }).autocomplete({
            source: function (request, response) {
                $.getJSON('@Url.Action("ProjectNameListMulti", "ProjectAssignment")', {
                    term: extractLast(request.term)
                }, response);
            },
            search: function () {
                var term = extractLast(this.value);
                if (term.length < 2) {
                    return false;
                }
            },
            focus: function () {
                return false;
            },
            select: function (event, ui) {
                var terms = split(this.value);
                terms.pop();
                terms.push(ui.item.value);
                terms.push("");
                this.value = terms.join("| ");
                return false;
            }
        });

 function split(val) {
        return val.split(/|\s*/);  
    }

 function extractLast(term) {
        return split(term).pop();
    }

我认为Split功能存在问题。根据jquery自动完成网站,分割功能是

function split( val ) {
  return val.split( /,\s*/ );
}

所以我用'|'替换',',但是自动完成变得没有响应。如何自定义分割功能。

1 个答案:

答案 0 :(得分:1)

|是正则表达式中的一个特殊字符,因此必须通过前面的\

进行转义

尝试使用

/\|\s*/