我正在使用JQuery UI自动完成功能,用于不同的领域。要获取数据我正在使用函数作为源。它很棒! 我想知道是否有一种方法不在源代码中使用匿名函数,而是声明一个通用的函数,它将有一个参数重定向到正确的URL。 我是JS和JQuery的新手,因此我不知道anonym函数中的参数请求和响应是什么。 这是我正在尝试做的事情:
$ac.autocomplete({
//Call the function here, but what are the parameter request and response???
source: autocomplete(),
minLength: 1
});
这是我想要打电话的功能
function autoComplete(request, response, url) {
$.ajax({
url: '/Comp/'+url,
dataType: "json",
type: "POST",
success: function (data) {
response($.map(data, function(item) {
return { label: item, value: item, id: item };
}));
}
});
}
非常感谢你的帮助。
答案 0 :(得分:3)
你应该使用
source: autoComplete
而不是
source: autocomplete()
还有一句话。 jQuery UI自动填充的默认实现仅使用value
和label
,而不使用id
。
答案 1 :(得分:1)
我将举例说明发生在我身上的情况,可以作为一个例子:
情况:用户选择带有Jquery Autocomplete的关键字后,不允许列出该关键字。考虑到查询执行相同,即未修改的猫。服务器端。
代码看起来像这样:
$( "#keyword-search" ).autocomplete({
minLength: 3 ,
source: function( request , response ) {
var param = { keyword_type: type , keyword_search: request.term } ;
$.ajax({
url: URI + 'search-to-json',
data : param,
dataType: "json",
type: "GET",
success: function (data) {
response($.map(data, function( item ) {
/* At this point I call a function, I use to decide whether to add on the list to be selected by the user. */
if ( ! is_record_selected( item ) ) {
return item;
}
}));
}
});
} ,
select: function( event , ui ) {
/* Before you add, looking if there is any cell */
/* If it exists, compare the id of each cell not to add an existing */
if ( validate_new_keyword( ui ) ) {
add_cell( ui ) ;
}
} ,
});
/* Any validation... */
function validate_new_keyword( ui ) {
var keyword_id = $.trim(ui.item.id) ;
Any condition...
if (keyword_id > 0) {
return true ;
}
return false ;
}
/* This function checks if a keyword has not been selected by the user, it checks for the keyword_array. */
function is_record_selected( item ) {
var index = jQuery.inArray( item.id , keyword_array ) ;
return index == -1 ? false : true;
}
Obs:因此可以在“source”和“select”中使用一个函数。 = P
答案 2 :(得分:0)
重新格式化你的问题将成为问题的解决方案。:)
$ac.autocomplete({
minLength: 1 ,
source: function(request, response, url){
var searchParam = request.term;
$.ajax({
url: '/Comp/'+url,
data : searchParam,
dataType: "json",
type: "POST",
success: function (data) {
response($.map(data, function(item) {
return {
label: item.Firstname,
value: item.FirstName
};
});
}
});//ajax ends
}
}); //autocomplete ends
jQuery UI需要请求和响应对象。 request.term 会为您提供用户输入的文字,响应方法会返回标签和值小部件工厂的项目,用于显示建议下拉列表
P.S:假设您的JSON字符串包含 FirstName 键!