如果未从Typeahead.js中选择值,则删除隐藏的输入值

时间:2014-04-07 19:14:31

标签: jquery typeahead.js

我正在使用Typeahead.js作为我的建议,带有id / value组合。在选择时,我将隐藏元素的值设置为id。

问题是,当用户首先从Typeahead的建议中选择某些东西,而不是手动填充其他值时 - 来自Typeahead的旧id值仍保留在隐藏元素中。

如果用户没有从Typeahead建议中选择它,有没有办法删除隐藏的id输入值?

编辑: 添加id值的函数:

$('.lang').on("typeahead:selected typeahead:autocompleted", function(e,datum) {
    $(this).parent().parent().nextAll('.lang_id').val(datum.id);
});

输入:

<input type="hidden" class="lang_id" value="" name="lang_row[<?php echo $i; ?>][lang_id]" id="lang_row_[<?php echo $i; ?>]_lang_id"/>

2 个答案:

答案 0 :(得分:1)

您应该在输入输入上侦听更改事件,当发生这种情况时,请从隐藏输入中删除ID,因为您知道用户已手动输入文本。

答案 1 :(得分:0)

您可以使用typeahead:selected和change事件的组合来跟踪更改并更新隐藏输入的ID

$('.lang').on("typeahead:selected typeahead:autocompleted", function(e,datum) {
    $(this).parent().parent().nextAll('.lang_id').val(datum.id);
    // add selected text as data 
    $(this).parent().parent().nextAll('.lang_id').data('name',datum.name);
}).on("change", function(e,datum) {
    var selectedval=$(this).parent().parent().nextAll('.lang_id').data('name');
    if(selectedval!=$(this).val()){
        console.log('ID reset to blank');
       $(this).parent().parent().nextAll('.lang_id').val('');                   
    }
});