验证jquery自动完成

Shr*_*ath 7 validation jquery-autocomplete

我有一个带有远程数据源的文本框,用于自动完成(jquery)[不是插件,jquery ui演示中显示的原始插件]如何确保用户只输入自动完成建议中的内容而不是他自己的内容?

jth*_*son 13

问题是缺乏具体细节,但我认为你的意思是在客户端进行验证,因为你明确提到了auto complete插件.这个答案将分为两部分.第一个是原始答案,假设一个自动完成插件.第二个是根据问题的更新进行修订.

1)使用http://docs.jquery.com/Plugins/Autocomplete

对此最好的解决方案是"mustMatch"选项.这是API 文档.

如果设置为true,则自动完成程序将仅允许后端显示的结果.请注意,非法值会导致输入框为空.

您应该能够以这种方式使用它:

$("selector").autocomplete("url", {"mustMatch": true});
Run Code Online (Sandbox Code Playgroud)

您还可以在"result"事件中以某种方式验证用户输入.这是一个链接:http://docs.jquery.com/Plugins/Autocomplete/result.

2)使用http://jqueryui.com/demos/autocomplete

这里没有mustMatch选项.您可以扩展插件,或者您可以添加类似于我为其他自动完成插件提到的内容.使用" 更改 "事件.

$( ".selector" ).autocomplete({
   change: function(event, ui) { ... }
});
Run Code Online (Sandbox Code Playgroud)

如果您使用数组作为数据源,这将更有效.由于您使用的是远程数据源,因此需要使用ui.item进行另一个最终查询以验证用户值.然后,您可以允许或拒绝默认行为.

在任何一种情况下,仍应在服务器端以某种方式验证输入.这超出了jQuery插件的范围.