如果用户输入文本而没有从一组自动完成建议中进行选择,我们需要能够调用处理程序。
在我们的例子中,输入的文本是否与任何自动完成值匹配并不重要 - 我们只关心用户是否点击/选择自动完成值,或不。
我们表单的工作方式是,用户开始输入联系人的姓氏,然后会收到自动填充建议,包括联系人的全名和公司。如果用户选择自动完成建议之一,我们将填充多个字段。一切正常。
新的要求是,如果用户没有选择其中一项建议,我们需要清空多个字段 - 我们希望使用从自动完成库调用的处理程序来实现这一点。
查看 previous answers ,看起来我们不能用 Jörn Zaefferer's autocomplete plugin 来做到这一点,但是如果您有补丁或知道如何实现该功能,这就是我们尝试将其插入的库。
最佳答案
我遇到了非常有趣的答案。它涉及 jQuery 插件如何管理其状态。当我查看 firebug(使用 firequery)时,我发现当我单击显示 DOM 节点的 jQuery 属性的图标(在 HTML 选项卡中)时,它显示了附加到 DOM 节点的所有插件数据,并且附加到该节点的是整个自动完成参数。因此我找到了解决方案。
$('#test').autocomplete({
change:function( event, ui ) {
var data=$.data(this);//Get plugin data for 'this'
if(data.autocomplete.selectedItem==undefined)
alert("manual");
else
alert("selected");
}
});
自动完成的作用是,如果我们从列表中选择,则 selectedItem 包含我们刚刚选择的 JSON 对象及其所有属性。但如果我们按 ESC 或取消自动填充,它就会设置为 null。
关于jquery - 如何检测用户何时忽略 jquery 自动完成建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1267149/