kcr*_*lla 15 javascript jquery twitter-bootstrap
是否可以将用户的选择限制为Bootstrap Typeahead项的预定义数据源项?因此,如果用户键入了不在数据源中的内容,则会显示一条消息,通知他们这样做?
Sam*_*rie 18
如果我理解,当先行模式组件失去焦点时,如果用户不在列表中,则应提示用户输入无效?
因此代码将是这样的:
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!');
}
Run Code Online (Sandbox Code Playgroud)
请注意indexOfIE6-8中未实现的事实.但是可以找到垫片,例如:查找项目是否在JavaScript数组中的最佳方法?.
我遇到了同样的问题,但在我的情况下,我的所有数据都是远程的.Bloodhound实际上没有任何好的钩子,我现在知道它可以让你这样做,但你可以挂钩到ajax完整回调并手动建立一个有效的输入缓存,然后检查更改/模糊.
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('');
}
});
Run Code Online (Sandbox Code Playgroud)