防止输入与Twitter预先输入建议值不同的值
Prevent entry of a value other than suggested with Twitter Typeahead
我在表单的不同位置使用Twitter Typeahead (http://twitter.github.io/typeahead.js)来简化文本输入中值的输入。但是,我有一个输入,我想禁止输入一个值,而不是预先输入。
虽然我通常会使用a来完成这样的任务,但Typeahead提供了一个更好的用户界面。
目前我有以下代码来启动Typeahead:
var countries = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
limit: 10,
prefetch: {
url: '/assets/data/countries.json',
filter: function(list) {
return $.map(list, function(country) { return { name: country }; });
}
}
});
countries.initialize();
$('input[name="member_country"].typeahead').typeahead(null, {
name: 'countries',
displayKey: 'name',
source: countries.ttAdapter()
}).on("typeahead:selected typeahead:autocompleted", function (ev, datum) {
console.log(datum);
});
关于如何将所选值与我正在加载的JSON中存在的值进行比较以检查是否匹配的任何指针?
我在寻找同样的答案时发现了这个线程。决定保留这个库并自己添加这个功能。
$('.typeahead')
.on('typeahead:select', function(ev, suggestion) {
$(ev.target).attr('data-value', suggestion);
})
.on('blur', function(ev) {
var target = $(ev.target);
target.val(target.attr('data-value'));
})
.on('typeahead:change', function(ev) {
var target = $(ev.target),
id = '.tt-dataset-' + ev.target.id + ' .tt-suggestion'; // visible suggestions div
var suggestions = $(id).map(function() {return $(this).text();} ).get();
var i = $.inArray(target.val(), suggestions);
if(i >= 0) {
target.attr('data-value', suggestions[i]);
} else {
target.attr('data-value', '');
}
})
这样工作:
- 在选择选项时,设置属性
data-value
来存储所选值。 - 在字段失去焦点时,将该字段设置为
data-value
以强制其返回选定值(或空,参见3)。 - 在上更改,检查字段是否与可见建议匹配。 设置
data-value
为建议,否则为空属性。也可以使用其他选项,但是添加这些侦听器可以节省您像@joshhunt建议的那样移动到另一个库。
我做了一些研究,在github上发现了这个问题,他们几乎说没有办法使用Typeahead/Bloodhound来做到这一点。
他们建议使用Chosen jquery插件或Select2 jquery插件,这两个插件看起来都能做你想做的事情。
同时,当我在做我的日常研究,发现一个名为Magic Suggest插件有点不同,可能不是你想做的,但可能值得一看。
希望我的回答有帮助,祝你好运!
相关文章:
- 如何根据AngularJS输入类$invalid将Twitter Bootstrap类设置为错误
- Twitter TypeAhead.js不更新输入
- Twitter bootstrap 输入标签在 Jquery 之前() 中不起作用
- 在 Twitter 引导模式中输入按键时触发 onClick 事件
- 如何使用Twitter Bootstrap 2.0验证输入字段并应用错误类
- 在使用输入/按钮's在Twitter Boostrap中
- twitter引导选项卡在单击选项卡时设置输入焦点
- 货币输入与Twitter Bootstrap(使用jQuery)
- 仅在 Firefox 中,当我单击任何地方时,我的 Twitter 提前输入搜索输入会清除
- 我如何停止我的javascript功能,如果输入是空的,如果输入不是一个现有的twitter帐户
- Twitter引导表单.如何捕获表单中输入的值
- 使用jquery根据来自API的输入数据动态更改Twitter按钮的data-text属性的值
- Twitter引导表单输入溢出仅在Chrome上
- 防止输入与Twitter预先输入建议值不同的值
- 在twitter上分享表单输入
- Twitter提前输入不同的值来显示
- 如何在Twitter引导程序的弹出窗口中插入输入文本
- jQuery/输入字段(user,pass)就像twitter一样's登录
- 输入[number]没有'twitter的引导
- 动态字符串[]用于twitter提前输入