Str*_*rry 8 jquery jquery-ui jquery-ui-autocomplete
我正在查看自动完成教程,我有几个问题:http://jqueryui.com/demos/autocomplete/#option-disabled
$( "#tags" )
// don't navigate away from the field on tab when selecting an item
.bind( "keydown", function( event ) {
if ( event.keyCode === $.ui.keyCode.TAB &&
$( this ).data( "autocomplete" ).menu.active ) {
event.preventDefault();
}
})
.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;
}
});
Run Code Online (Sandbox Code Playgroud)
所以我理解源的参数是request和response.这些保留的关键字是?在google中键入此内容时,我找不到任何内容.我不清楚这里传递的请求和响应是什么.请求只是抓住输入?我在哪里可以阅读更多内容?
jos*_*736 24
不,request或者response不是保留关键字 - 如果是,则不能将它们用作函数参数名称.
这里发生的事情很简单,如果你在Node中做任何事情,你会看到模式.它是异步JavaScript.
你正在传递一个匿名函数source.只要自动完成需要查询数据源(换句话说,用户输入某些内容),就会调用此函数.
函数的参数是request和response. request只是信息自动完成请求; request.term是查询(用户键入的内容).这取决于你如何实现搜索 - 也许你有一个可能的局部变量,或者你可能会对服务器进行AJAX调用.
现在重要的部分:如果你正在进行AJAX调用,那么你不能只是return一个值,source()因为函数将在AJAX调用完成之前很久就返回.这就是为什么有一个response参数.
response是传递给source()函数的函数引用,只要您有对请求的答案,就会调用该函数.通过闭包的魔力,您可以从AJAX回调中调用此函数.
response(可能不那么令人困惑地命名callback)期望一个字符串或具有label和value属性的对象的数组.它会在自动完成下拉菜单中显示这些结果.
把它们放在一起:
$('selector').autocomplete({
...
source: function(request, response) {
// calculate results for a query.
response([{ label: 'Example', value: 'ex' }]);
}
});
Run Code Online (Sandbox Code Playgroud)
Jon*_*Jon 15
request并且response只是代码作者选择赋予分配给source自动完成小部件选项的回调的两个形式参数的名称:
只需指定源选项,即可自定义自动完成功能以使用各种数据源.数据源可以是:
- 包含本地数据的数组
- 一个String,指定一个URL
- 回调
第三种变体即回调提供了最大的灵活性,可用于将任何数据源连接到自动完成.回调有两个参数:
- 一个请求对象,具有一个名为"term"的属性,它引用当前文本输入中的值.例如,当用户在城市字段中输入"new yo"时,自动完成术语将等于"new yo".
- 一个响应回调,它要求一个参数包含要向用户建议的数据.应根据提供的术语过滤此数据,并且可以采用上述任何简单本地数据格式(String-Array或具有标签/值/两者属性的Object-Array).在提供自定义源回调以处理请求期间的错误时,这很重要.即使遇到错误,也必须始终调用响应回调.这可确保窗口小部件始终具有正确的状态.
| 归档时间: |
|
| 查看次数: |
30801 次 |
| 最近记录: |