如何检测用户何时忽略jquery自动完成建议

sea*_*lea 2 jquery autocomplete

如果用户在选择一组自动完成建议的情况下输入文本,我们需要能够调用处理程序.

在我们的例子中,如果输入的文本匹配任何自动完成值或没有也不要紧-我们只关心如果用户点击/选择自动完成值,或者没有.

我们的表单的工作方式是用户开始输入联系人的姓氏,并获得自动填充建议,包括联系人的全名和公司.如果用户选择其中一个自动填充建议,我们会填充多个字段.这一切都很好.

新的要求是,如果用户没有选择其中一个建议,我们需要删除多个字段 - 我们希望使用从自动完成库调用的处理程序来实现这些字段.

看看以前的 答案,看起来我们不能用JörnZaefferer的自动完成插件做到这一点,但是如果你有一个补丁或一些想法如何实现这个功能,那么这就是我们试图将其推入的库.

小智 7

我遇到了非常有趣的答案.它涉及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");      
    }
});
Run Code Online (Sandbox Code Playgroud)

自动完成的作用是,如果我们从列表中选择,则selectedItem包含我们刚刚选择的JSON对象及其所有属性.但是如果我们按ESC或取消自动填充,它将被设置为null.