引导类型只允许列表值
是否可以将用户的选择限制为Bootstrap Typeahead项目的预定义数据源项目? 因此,如果用户键入不在数据源中的内容,则会显示一条消息,通知他们这样的内容?
这里是演示:http://cruiseoutlook.com/test
如果我明白,当类型组件失去焦点时,如果它不在列表中,应该提醒用户它的输入无效?
代码将因此是这样的:
var myData = [...]; // This array will contain all your possible data for the typeahead
$("#my-type-ahead").typeahead({source : myData})
.blur(validateSelection);
function validateSelection() {
if(source.indexOf($(this).val()) === -1)
alert('Error : element not in list!');
}
只是要小心有关事实indexOf
不IE6-8实现。 但是可以找到垫片,例如:找到某个项目是否在JavaScript数组中的最佳方法? 。
我遇到了同样的问题,但在我的情况下,我的所有数据都很遥远 。 Bloodhound并没有真正的钩子,我目前意识到这一点可以让你做到这一点,但你可以挂钩到ajax complete回调并手动建立一个有效的输入缓存,然后检查变化/模糊。
var myData = new Bloodhound({
remote: {
url: '/my/path/%QUERY.json',
ajax: {
complete: function(response){
response.responseJSON.forEach(function (item) {
if (myData.valueCache.indexOf(item.value) === -1) {
myData.valueCache.push(item.value);
}
});
}
}
}
});
myData.valueCache = [];
myData.initialize();
$('#artists .typeahead').typeahead(null, {
source: myData.ttAdapter()
}).bind('change blur', function () {
if (myData.valueCache.indexOf($(this).val()) === -1) {
$(this).val('');
}
});
使用jquery和Samuel的解决方案,我认为你会克服IE问题。 将您的validateSelecion函数更改为:
function validateSelection() {
if ($.inArray($(this).val(), myData) === -1)
alert('Error : element not in list!');
}
正如塞缪尔指出的那样离开休息。
链接地址: http://www.djcxy.com/p/74955.html