如何在自动完成(jQuery UI)选择事件中更改文本框的值?

18
为什么当我选择一个项目时,#input-myBox不会清空?似乎自动完成功能阻止了我的 .val('') 生效,那么我该如何解决这个问题?
$("#input-myBox").autocomplete({
    source: response,
    minLength: 1,
    select: function(event, ui) {
                var selectedObj = ui.item;
                $("#input-myBox").appendTo(".foo");
                $("#input-myBox").val('');  
    }
});

1
#input-mybox 应该改为 #input-myBox,以匹配您的问题(可能是一个答案)。 - Rob W
5个回答

48

event.preventDefault() 阻止自动完成设置该字段。

select: function (event, ui) {
  event.preventDefault();
  var selectedObj = ui.item;
  $("#input-myBox").appendTo(".foo");
  $("#input-myBox").val('');  
}

这个调用preventDefault()会有其他(不好的)影响吗? - osullic

9
此外,您可以使用'return false;'来阻止自动完成设置该字段。
select: function (event, ui) { 
    var selectedObj = ui.item;        
    $("#input-myBox").appendTo(".foo");
    $("#input-myBox").val('');  
    return false;
}

4

如果您只想将所选值替换为其他内容:

select: function( event, ui ) {
  ui.item.value = substituteWord(ui.item.value);
}

1
似乎不起作用。如果我在“return false”之前加上“ui.item.value =“12345””,则“12345”不会显示在任何地方。另一方面,将“this.value =“12345””赋值给它则具有期望的效果。 - Jens Mander

1

#input-mybox(小写 b)还是 #input-myBox(大写 b)?

这可能是你的问题 :)

编辑:rob 先我一步了


0

你的代码存在不一致:

$("#input-mybox").appendTo(".foo");
$("#input-myBox").val('');  

"#input-myBox" 或者 "#input-mybox" ???


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接