首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery:推特Typeahead函数不匹配

JQuery:推特Typeahead函数不匹配
EN

Stack Overflow用户
提问于 2013-08-04 02:44:09
回答 2查看 4.6K关注 0票数 1

我使用typeahead.js将产品id分配给一个隐藏的html表单域。当有匹配项时,这很有效:

代码语言:javascript
复制
$('.products_tt .typeahead').typeahead
    name: 'products_tt',
    prefetch: 
        url: '/products.json',
        ttl: 60 * 5e3
    template: '<p><strong>{{value}}</strong> – {{year}}</p>',
    engine: Hogan

$('.products_tt .typeahead').on "typeahead:selected typeahead:autocompleted", (e,datum) ->
    $('#disk_file_product_id').val(datum.id)

当输入字段保留为空时,我将清除隐藏字段:

代码语言:javascript
复制
$('.products_tt .typeahead').blur ->
    if $(this).val().length == 0
        $('#disk_file_product_id').val("")

但是,当在输入字段中输入了文本但没有匹配时,我还需要清除隐藏字段。

我的Java/Coffeescript技能很弱,所以不知道怎么做?!?

EN

回答 2

Stack Overflow用户

发布于 2013-08-04 14:47:11

以下其中一项应该可以工作:

1)首先连接到输入字段的change事件,然后清除那里的#disk_file_product_id。如果有选择,您的typeahead事件稍后将再次设置此选项。这也节省了您的blur回调。

代码语言:javascript
复制
$('.products_tt .typeahead').change ->
    $('#disk_file_product_id').val("")

2)在openedclosed事件中清除#disk_file_product_id,而不是在字段的change事件中清除。我不太喜欢这样。

代码语言:javascript
复制
$('.products_tt .typeahead').on "typeahead:opened typeahead:closed" ->
    $('#disk_file_product_id').val("")
票数 5
EN

Stack Overflow用户

发布于 2014-01-07 10:20:22

我知道这已经有几个月的历史了,但是你可以这样做:

使用jQuery查看每个keyup事件的DOM中有多少".tt-suggestions“。如果没有,请清除隐藏字段。

代码语言:javascript
复制
$('.products_tt .typeahead').typeahead({
    name: 'products_tt',
    prefetch: url: '/products.json',
    ttl: 60 * 5e3
    template: '<p><strong>{{value}}</strong> – {{year}}</p>',
    engine: Hogan
}).on("typeahead:selected typeahead:autocompleted", function (e, datum) {
    $('#disk_file_product_id').val(datum.id);
}).on('keyup', function () {
    if($('.tt-suggestion').length === 0){
        $('#disk_file_product_id').val("");
    }
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18036078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档