我正在使用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"/>
答案 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('');
}
});