jQuery自动完成:如何拆分字符串结果?

时间:2010-04-07 16:09:33

标签: asp.net jquery autocomplete

我在.aspx页面上使用自动完成插件时遇到以下情况。它工作正常。自动完成搜索的结果产生产品ID,产品描述与其连接(即2099 - A产品)。我知道我需要使用split(),但我在哪里放呢?我仍然是jQuery和javascript的新手。

$(document).ready(function() {
  $('.divAutoComplete').autocomplete("LookupCodes.aspx?type=FC", { 
     mustMatch: true 
  });
});

3 个答案:

答案 0 :(得分:1)

如果它是相同的autocomplete I've used(由Tomas Kirda提供),您应该可以像这样添加一个onSelected事件:

$(document).ready(function() {
  $('.divAutoComplete').autocomplete("LookupCodes.aspx?type=FC", { 
     mustMatch: true,
     onSelect: function(value, data) { autoCompleteSelected(value, data); }
  });
});

function autoCompleteSelected(value, data) {
    var parts = data.split("--");
 ... do something with parts

}

显然,如果不是那么它会有不同的事件

答案 1 :(得分:0)

在JavaScript中,任何字符串都可以使用split函数进行拆分,如下所示:

"Pandas enjoy tasty bamboo".split(' ')

以上将字符串拆分为返回以下数组的空格:

["Pandas", "enjoy", "tasty", "bamboo"]

任何字符串都可以输入到split函数中,它可以很好地处理多字符串。

现在关于jQuery自动完成插件的问题,你需要让你的.aspx页面返回一个JS数组选项才能使它工作。或者,您可以通过其他方式加载数据,然后将数组传递给自动完成。如果服务器返回如下所示的数组,则可以直接传递它:

["1234 -- Chicken", "4321 -- Noodle", "1432 -- Irrational Monkeys"]

关键是自动完成使用数组进行匹配。

docs for the autocomplete plugin似乎足够好。

答案 2 :(得分:0)

执行此分割代码

<script type="text/javascript">
    $(function() {
        var availableTags = ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby", "python", "c", "scala", "groovy", "haskell", "perl"];
        function split(val) {
            return val.split(/,\s*/);
        }
        function extractLast(term) {
            return split(term).pop();
        }

        $("#tags").autocomplete({
            minLength: 0,
            source: function(request, response) {
                // delegate back to autocomplete, but extract the last term
                response($.ui.autocomplete.filter(availableTags, extractLast(request.term)));
            },
            focus: function() {
                // prevent value inserted on focus
                return false;
            },
            select: function(event, ui) {
                var terms = split( this.value );
                // remove the current input
                terms.pop();
                // add the selected item
                terms.push( ui.item.value );
                // add placeholder to get the comma-and-space at the end
                terms.push("");
                this.value = terms.join(", ");
                return false;
            }
        });
    });
    </script>