是否可以禁止JQuery UI自动完成小部件中的自由文本输入?
例如,我只希望允许用户从自动完成列表中显示的项目列表中进行选择,并且不希望他们能够编写一些随机文本.
我没有在演示/文档中看到任何描述如何执行此操作的内容.
http://jqueryui.com/demos/autocomplete/
我正在使用这样的自动完成功能
$('#selector').autocomplete({
source: url,
minlength: 2,
select: function (event, ui) {
// etc
}
Run Code Online (Sandbox Code Playgroud) 我们正在使用的内容即自动完成的jQuery插件乔恩Zaefferer,并试图验证有效的选项输入.
该插件具有result()事件,该事件在进行选择时触发.这没关系,但是当用户点击时我需要检查文本框中的值.所以我们尝试了.change()和.blur()事件,但它们都存在问题:当你点击结果div中的一个条目('suggest'列表)时,.change()和.blur()事件触发,这是在插件向文本框写入值之前,因此此时无需验证.
有人可以帮我配置事件,所以每当有人点击,但不是在结果框中我可以检查框中的有效值.如果这是错误的方法,请通知我正确的方法.我们最初使用此插件是因为它的'mustMatch'选项.此选项似乎并不适用于所有情况.很多时候,有效的条目将被写入文本框,而被插件清除为无效,我无法确定原因.
基本代码示例:
<html>
<head>
<title>Choose Favorite</title>
<script language="JavaScript" src="jquery-1.3.2.min.js" ></script>
<script language="JavaScript" src="jquery.autocomplete.min.js" ></script>
<script>
$(".suggest").autocomplete("fetchNames.asp", {
matchContains:false,
minChars:1,
autoFill:false,
mustMatch:false,
cacheLength:20,
max:20
});
$(".suggest").result(function(event, data, formatted) {
var u = this;
// Check value here
});
/* OR */
$(".suggest").change(function(me) {
//check value here
});
</script>
</head>
<body>
<label for="tbxName">Select name (I show 10):</label><br />
<INPUT type="text" id="tbxName" name="tbxName" class="suggest"><br />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)