是否有人为ajax源成功修改了上述小部件?我已经能够进行修改,除了突出显示选项的搜索词外,它工作正常。更具体地说,下面的代码。
var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
response( select.children( "option" ).map(function() {
var text = $( this ).text();
if ( this.value && ( !request.term || matcher.test(text) ) )
return {
label: text.replace(
new RegExp(
"(?![^&;]+;)(?!<[^<>]*)(" +
$.ui.autocomplete.escapeRegex(request.term) +
")(?![^<>]*>)(?![^&;]+;)", "gi"
), "<strong>$1</strong>" ),
value: text,
option: this
};
}) );
这是我对小部件的修改:
(function ($) {
$.widget("ui.Clients", {
_create: function () {
var self = this,
select = this.element.hide(),
selected = select.children(":selected"),
value = selected.val() ? selected.text() : "";
var input = this.input = $("<input>")
.insertAfter(select)
.val(value)
.autocomplete({
delay: 0,
minLength: 0,
source: function (request, response) {
$.ajax({
url: "/Controller/Action", type: "POST", dataType: "json",
data: { searchText: request.term },
success: function (data) {
response($.map(data, function (item) {
return {
value: item.ClientName,
id: item.ClientId
}
}))
}
})
},
任何人都可以协助将该功能集成到我的ajax调用中吗?
答案 0 :(得分:1)
小部件期望响应的返回值中有一个label属性。 label属性是自动完成窗口中显示的内容。如果您没有指定label属性,那么它只是value属性。因此,您需要做的就是更改label属性的原始值并用item.ClientName替换文本
(function ($) {
$.widget("ui.Clients", {
_create: function () {
var self = this,
select = this.element.hide(),
selected = select.children(":selected"),
value = selected.val() ? selected.text() : "";
var input = this.input = $("<input>")
.insertAfter(select)
.val(value)
.autocomplete({
delay: 0,
minLength: 0,
source: function (request, response) {
$.ajax({
url: "/Controller/Action", type: "POST", dataType: "json",
data: { searchText: request.term },
success: function (data) {
response($.map(data, function (item) {
return {
value: item.ClientName,
id: item.ClientId,
label: item.ClientName.replace(
new RegExp(
"(?![^&;]+;)(?!<[^<>]*)(" +
$.ui.autocomplete.escapeRegex(request.term) +
")(?![^<>]*>)(?![^&;]+;)", "gi"
), "<strong>$1</strong>" ),
}
}))
}
})
},
答案 1 :(得分:0)
该演示有很多选项 - Remote JSONP Datasource就是其中之一。