2012-07-23 110 views
20

我想清除Jquery自动完成的文本框,一旦用户做出选择。选择后的Jquery自动完成中的清除文本框

我试图清理现场:

select: function(event, ui) { 
    $(this).val(''); 
} 

但这不是working.I我使用jQuery的1.6.4和jQuery-UI-16年8月1日。

任何想法?

+0

我注意到你的代码说“选择”。只是想澄清,这是一个文本框,而不是我提供解决方案之前的选择框。 – CoreyRS 2012-07-23 07:22:17

+1

@CoreyRS:'select'是您传递给'autocomplete'的选项的名称,当用户选择其中一个自动完成选项时挂钩该事件。 – 2012-07-23 07:23:17

回答

45

select事件的字段更新之前发生。你将不得不取消该事件,以避免现场更新已清除后:

select: function(event, ui) { 
    $(this).val(""); 
    return false; 
} 

更新:作为T.J.指出下面,它的速度稍快,直接,而不是去通过val()更新value DOM属性:

select: function(event, ui) { 
    this.value = ""; 
    return false; 
} 
+6

+1或者只是'this.value =“”;',如[其范例](http://jqueryui.com/demos/autocomplete/#multiple-remote)。 – 2012-07-23 07:20:16

1

尝试

select: function(event, ui) { 
input.value=''; 
} 
0

你也可以试试这个:

$("#your_autocomplete_sub_listview_id").children().addClass("ui-screen-hidden"); 

这将在选择隐藏所有自动完成过滤列表它。

2

我使用jQuery UI的版本23年1月8日和$(this).val("");select事件还没有为我工作,但这并:

$("selector").autocomplete({ 
    // ... 
    close: function(el) { 
     el.target.value = ''; 
    } 
});