html和jquery自动完成(输入值)

时间:2017-10-26 10:13:28

标签: javascript html jquery-ui autocomplete

大家好我输入元素有问题。 假设我有一个输入元素。我在其上使用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是正确的,值也会改变,自动完成也会被删除。

然而,输入字段上的文字仍为不变。它是旧的(我在自动完成框中选择项目的那个),即使值已正确更改。

删除自动填充的主要原因是因为我有相同的行为,但删除它并没有解决问题。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

使用jQuery的val代替attr值:

if(target_input.length) {
    target_input.attr('data-id', dataid);
    target_input.val(dataval);
}