我的Jquery功能:
<script type="text/javascript">
function Origin(sender, args) {
$(function () {
$("#<%=txtInfo.ClientID %>").autocomplete({
source: function (request, response) {
$.ajax({
url: '<%=ResolveUrl("~/Webservice.asmx/Get") %>',
data: "{ 'prefix': '" + request.term + "'}",
dataType: "json",
type: "POST",
async: false,
mustMatch: true,
contentType: "application/json; charset=utf-8",
success: function (data) {
response($.map(data.d, function (item) {
return {
label: item.split('-')[0],
val: item.split('-')[1]
}
}))
},
error: function (response) {
},
failure: function (response) {
}
});
},
select: function (e, i) {
$("#<%=hdnInfo.ClientID %>").val(i.item.val);
info1()
},
minLength: 0
}).bind('focus', function () { $(this).autocomplete("search"); });
});
}
</script>
返回{label:item.split(&#39; - &#39;)[0],val:item.split(&#39; - &#39;)[1]}显示之后的值从&#39; - &#39;分开例如:如果值为&#34; abc-2223&#34;然后它返回&#34; abc&#34; 但如果价值是&#34; A-1 abc-2223&#34;然后它只返回&#34; A&#34;但我想要&#34; A-1 abc&#34;。
答案 0 :(得分:1)
应用此逻辑。 JsFiddle
<script>
$(function () {
var items = ["abc-2223", "A-1 abc-2223"];
$.each(items, function (key, value) {
var item = value;
var text = "";
var chkItem = item.split('-')[0];
if (chkItem.length == 1) {
text = item.substring(item.lastIndexOf("-") + 0, item.length);
text = item.replace(text, "");
}
else {
text = chkItem;
}
alert(text);
});
});
</script>
<强>更新强>
当您要求更改代码时;请更改success
功能,如下面的代码。
success: function (data) {
response($.map(data.d, function (item) {
//Filter item on condition
var txtLabel = "";
var chkItem = item.split('-')[0];
if (chkItem.length == 1) {
txtLabel = item.substring(item.lastIndexOf("-") + 0, item.length);
txtLabel = item.replace(txtLabel, "");
}
else {
txtLabel = chkItem;
}
return {
label: txtLabel,
val: item.split('-')[1] //you have not specified for value field.
}
}))
},
答案 1 :(得分:0)
您的服务器在其响应中发送一个字符串数组(data.d
)。
让您的服务器直接返回{"label":"...","val":"..."}
个对象的数组。