我在.aspx页面上使用自动完成插件时遇到以下情况。它工作正常。自动完成搜索的结果产生产品ID,产品描述与其连接(即2099 - A产品)。我知道我需要使用split(),但我在哪里放呢?我仍然是jQuery和javascript的新手。
$(document).ready(function() {
$('.divAutoComplete').autocomplete("LookupCodes.aspx?type=FC", {
mustMatch: true
});
});
答案 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"]
关键是自动完成使用数组进行匹配。
答案 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>