Javascript 如果未执行项目选择,但“自动完成”字段中存在字符串,如何处理这种情况?

Javascript 如果未执行项目选择,但“自动完成”字段中存在字符串,如何处理这种情况?,javascript,jquery,jquery-ui,autocomplete,jquery-autocomplete,Javascript,Jquery,Jquery Ui,Autocomplete,Jquery Autocomplete,我正在使用jQueryUIV1.9。我成功地实现了这个小部件,但是当我不得不处理用户没有从“打开”菜单中选择任何项目,但仍然在相关的“自动完成”字段中键入字母的情况时,我遇到了一些麻烦(也就是说,即使自动完成菜单被隐藏,用户仍继续键入字母,因为该菜单中不存在与输入名称相同的项目) 在这种情况下(当未执行项目选择,但“自动完成”字段中存在字符串时),我想提醒用户,他/她没有选择现有对象,而是在键入自定义对象。我如何才能做到这一点 注意:实际上,我试图强制用户选择一个现有项目,或者,如果没有选择,

我正在使用jQueryUIV1.9。我成功地实现了这个小部件,但是当我不得不处理用户没有从“打开”菜单中选择任何项目,但仍然在相关的“自动完成”字段中键入字母的情况时,我遇到了一些麻烦(也就是说,即使自动完成菜单被隐藏,用户仍继续键入字母,因为该菜单中不存在与输入名称相同的项目)

在这种情况下(当未执行项目选择,但“自动完成”字段中存在字符串时),我想提醒用户,他/她没有选择现有对象,而是在键入自定义对象。我如何才能做到这一点



注意:实际上,我试图强制用户选择一个现有项目,或者,如果没有选择,则提示用户创建一个新项目。

您可以为autocomplete插件的更改事件设置一个回调函数,在该函数中,您应该能够检查是否选择了一个项目:

$( "#autocomplete" ).autocomplete({
     change: function(e,ui){
         if(ui.item === null)
           alert('No item has been selected')  
    }
});
更新:

若要在输入失去焦点之前触发更改事件,可以使用以下代码,在按键事件时触发它:

$( "#autocomplete" ).autocomplete({
         change: function(e,ui){
             if(!ui || ui.item === null)
                 console.log('No item has been selected') 
        }
    }).on('keypress',function(){$(this).autocomplete('option','change').call()});

您的代码似乎按预期工作,但我能做些什么才能使其更“响应”?也就是说(可能通过使用一些jQuery UI功能),我如何在“实时”中检查
null
条件并相应地触发警报?我知道了,但我打开了一个警报,因为我遇到了一些相关问题。