[英]How to implement my own rule in filter result in jQuery UI Autocomplete
這是我的代碼:
var projects = [{label:"PH2938", value: "1", fk: "3", desc: "hello"},
{label:"JUH28", value: "2", fk: "0", desc: "world"},];
{label:"HK383", value: "3", fk: "3", desc: "!"},];
$( "#serial_no" ).autocomplete({
minLength: 0,
source: function(request, response) {
var results = $.ui.autocomplete.filter(projects, request.term);
response(results);
},
focus: function( event, ui ) {
$( "#serial_no" ).val( ui.item.label );
return false;
},
select: function( event, ui ) {
$( "#serial_no" ).val( ui.item.label );
$( "#device_id" ).val( ui.item.value );
$( "#device_model" ).text( ui.item.desc );
return false;
}
})
.data( "ui-autocomplete" )._renderItem = function( ul, item ) {
return $( "<li>" )
.append( "<a>" + item.label + "</a>" )
.appendTo( ul );
};
因此,現在,例如,如果我在字段中鍵入“ H”,則將顯示所有3個結果(即PH2938,JUH28,HK383)。 我的問題是:是否可以僅顯示fk = 3的結果(即PH2938,HK383)。也就是說,我可以實施自己的規則來顯示哪個結果。
如果我已正確理解,則需要按某些條件過濾projects
。 在這種情況下, fk
等於'3'
。
由於您已經在使用jQuery,因此$ .grep是篩選任務的理想選擇。
$.grep(projects, function (project) {
return project.fk === '3';
});
現在,我們必須決定在哪里執行此過濾。
如果您想擺脫那些符合fk
標准的項目,而不論自動完成輸入中使用的術語如何,我都會在原始projects
數組中這樣做:
var projects = [{label:"PH2938", value: "1", fk: "3", desc: "hello"},
{label:"JUH28", value: "2", fk: "0", desc: "world"},];
{label:"HK383", value: "3", fk: "3", desc: "!"},];
projects = $.grep(projects, function (project) {
return project.fk === '3';
});
如果您想要的是更靈活的東西,它允許您根據其他條件提供不同的數據源,不僅是標簽的文本匹配,還可以在source
屬性中執行以下過濾:
source: function(request, response) {
var results = $.ui.autocomplete.filter(projects, request.term);
// Filter the matched results by project fk 3.
results = $.grep(results, function (project) {
return project.fk === '3';
});
response(results);
},
過濾也可以在匹配之前執行:
source: function(request, response) {
// Filter the matched projects by project fk 3.
var filteredProjects = $.grep(projects, function (project) {
return project.fk === '3';
});
var results = $.ui.autocomplete.filter(filteredProjects, request.term);
response(results);
},
請參閱后者的演示 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.