如何禁用typeahead:在远程typeahead.js中聚焦已填充的文本字段时处于活动状态
how to disable typeahead:active when focusing a filled-in text field in a remote typeahead.js
我使用的是typeahead.js,这很好,但这是我的用例:当页面加载时,我有一个文本字段已经在服务器端用字符串填充,所以我不希望用户关注文本字段时显示建议菜单。
typeahead.js在聚焦文本字段时似乎总是显示菜单。这是有道理的,因为minLength
是2,文本字段值类似于"Tony"(或其他什么)。但我尝试过在typeahead:active
事件的回调中使用hint: false
和调用$('.typeahead').typeahead('close')
,但这两种方法似乎都无法阻止菜单的显示。
这是我正在使用的init代码:
$('#locationInput').typeahead({
hint: false,
highlight: false,
minLength: 2
},
{
name: 'locations',
display: 'name',
source: typeaheadLocations, // a simple Bloodhound instance
templates: {
suggestion: function(locationObj) {
return $('<div>' + locationObj.name + '</div>');
}
}
});
在我聚焦文本字段和实际显示菜单之间有一个轻微的延迟,因为必须运行远程GET。所以我想我需要在集中注意力之后,以某种方式防止这种情况发生。
似乎关闭typeahead:open
事件中的菜单就可以了,但这对我来说似乎很糟糕
$('#locationInput').typeahead({
hint: true,
highlight: true,
minLength: 2
},
{
name: 'locations',
display: 'name',
source: typeaheadLocations,
templates: {
suggestion: function suggestion(locationObj) {
return $('<div>' + locationObj.name + '</div>');
}
}
}).on('typeahead:open', function(e) {
var $input = $(e.currentTarget);
if (!$input.data('wasFocusedOnce')) {
$input.data('wasFocusedOnce', true);
$input.typeahead('close');
}
}).on('typeahead:close', function(e) {
$(e.currentTarget).removeData('wasFocusedOnce');
}).on('keydown', function(e) {
$(e.currentTarget).data('wasFocusedOnce', true);
});
如果有人知道更好的方法,我洗耳恭听!
相关文章:
- 如何使用jquery在填充自动完成的值后使文本框只读
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 用程序搜索JQuery数据表中的文本
- jQuery匹配JSON对象的部分文本
- onkeyup无法动态创建多个文本区域
- 如何在下面的ES6循环中获得前面的文本
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 借助asp.net验证或java脚本对多个文本进行验证
- 无法在ajaxStart中更改跨度文本
- 高亮显示时编辑文本大小和颜色
- jquery中的文本框验证
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- Sails.js:同时发布文本输入和一个文件
- 当鼠标悬停在文本中的单词上时显示警报
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- 文本框动态输入后,typeahead无法工作
- 从文本框中删除Twitter Typeahead
- 允许 typeahead,js 自动完成文本中的单词,而不仅仅是下拉列表中的单个值