大家好我输入元素有问题。 假设我有一个输入元素。我在其上使用jquery自动完成,
$(input).autocomplete({
...,
source: function(request, response) { ... },
select: function(e, ui) {
var keyid = ui.item.iddo;
var keylab = ui.item.label;
$(this).attr('data-id', keyid);
$(this).attr('value', keylab);
}
});
当我从列表中选择一个元素时,数据id被正确设置,值也是,输入文本是与值对应的正确文本。
现在我有另一个元素,当我点击它时,我需要更改所述输入的data-id属性及其值。我也试图删除自动完成功能:
$(document).on('click', '.anchor', function(evt){
evt.preventDefault();
var ele_link = $(this);
var datain = ele_link.data('input');
var dataid = ele_link.data('id');
var dataval = ele_link.text();
var target_input = $('#' + datain);
//try to remove autocomplete
if($(target_input).attr('autocomplete')) {
$(target_input).autocomplete('destroy');
$(target_input).removeAttr('autocomplete'); //not actually needed
}
if(target_input.length) {
target_input.attr('data-id', dataid);
target_input.attr('value', dataval);
}
});
它的工作原理是:输入数据ID是正确的,值也会改变,自动完成也会被删除。
然而,输入字段上的文字仍为不变。它是旧的(我在自动完成框中选择项目的那个),即使值已正确更改。
删除自动填充的主要原因是因为我有相同的行为,但删除它并没有解决问题。
我该怎么办?
答案 0 :(得分:0)
使用jQuery的val
代替attr
值:
if(target_input.length) {
target_input.attr('data-id', dataid);
target_input.val(dataval);
}