jQuery自动完成:如何禁用自由文本,并显示一个错误,从列表中的项目必须被选中
jQuery Autocomplete: How to disallow free text, and display an error that an item from the list must be selected?
我知道javascript足够危险,我一直在阅读自动完成小部件的文档,但找不到任何关于该主题的内容。
旧版本的小部件确实有一个名为:mustMatch的选项,但我在新版本中没有看到任何选项。
我至少想出了如何在自动完成开始之前强制输入至少两个字符。为此,我添加了这一行:$("#user-city")。我有一种感觉,这可以折叠到下面的代码,但我不知道如何。
无论如何,是否有一种方法可以强制complete只接受列表中的值?然后可能显示div "你必须从列表中选择一个值" 如果他们继续输入一些自由文本?然后,如果他们只是取消选择框,它会删除他们输入的任何内容,因为它不匹配任何内容。
$(function() {
var names = [ "Boston", "New York", "New Jersey", "Kansas City", "Los Angeles" ];
var accentMap = {
"á": "a",
"ö": "o"
};
var normalize = function( term ) {
var ret = "";
for ( var i = 0; i < term.length; i++ ) {
ret += accentMap[ term.charAt(i) ] || term.charAt(i);
}
return ret;
};
$( "#user-city" ).autocomplete({ minLength: 2});
$( "#user-city" ).autocomplete({
source: function( request, response ) {
var matcher = new RegExp( $.ui.autocomplete.escapeRegex( request.term ), "i" );
response( $.grep( names, function( value ) {
value = value.label || value.value || value;
return matcher.test( value ) || matcher.test( normalize( value ) );
}) );
}
});
});
这是jsfiddle: http://jsfiddle.net/HKzL7/
谢谢你的帮助!
我认为您可以使用change
事件,并可以检查ui.item
是否为空,然后您可以使输入为空并显示警报或自定义消息,例如(只是一个想法)
change: function( event, ui ) {
if(ui.item==null)
{
this.value='';
alert('Please select a value from the list'); // or a custom message
}
}
。
Update: change事件触发当字段被模糊,如果值已经改变。
相关文章:
- 用于查询错误转换的角度资源返回列表
- 为什么当我尝试在Ionic中使用列表时会出现此JavaScript错误
- 参数列表Three.js之后的未捕获语法错误:缺少)
- JavaScript类列表选择器错误
- 参数列表后缺少未捕获的语法错误)
- 如何将对象插入对象列表的开头,当它有 unshift 不是函数错误
- 属性列表后缺少}语法错误
- 未捕获的类型错误:对象#<节点列表>没有方法'addEventListener'
- 在列表项中插入错误值的文本输入
- 下拉列表中的选定索引在未选择任何值时引发错误
- 参数列表后的未捕获语法错误:缺少)
- 使用 Angular.js 使用多选下拉列表时出现 [$compile:multidir] 错误
- 在javascript错误中将json列表传递给数组
- 如何更新列表项由jQuery AJAX调用添加的ASP Dropdown:错误无效的回发或回调
- Json下拉列表错误
- 求解参数列表错误后的WebDriverException:缺少)
- fql获取好友列表错误
- Adobe Javascript If/Else下拉列表错误
- JQuery丢失)后的参数列表错误:
- HTML 中的动态下拉列表错误