选择jQuery UI Autocomplete后清除表单字段

时间:2011-03-21 18:52:36

标签: jquery jquery-ui autocomplete

我们正在使用JQuery UI自动填充,并且在查询完成后我在清除包含搜索词的文本框时遇到问题。这是我们的JQuery代码:

$(document).ready(function () {
        $("form#search input#term").autocomplete({
            source: '<%= Url.Action("Display", "Search") %>',
            delay: 200,
            minLength: 3,
            parse: function (data) {
                var array = new Array();
                for (var i = 0; i < data.length; i++) {
                    array[array.length] = { data: data[i], value: data[i], result: data[i].link };
                }
                return array;
            },
            select: function (event, ui) {
                window.location.href = ui.item.value;
                $(this).val() = "";
                return false;
            }
        });
    });

此代码在Firefox中运行良好,但IE 8抛出异常并提供一个对话框,询问我是否要使用IE Script Debugger。我看到了这个Stack Overflow帖子:Clear form field after select for jQuery UI Autocomplete,它说问题的解决方案是从JQuery select函数返回false,但这没有帮助。有人建议如何解决这个问题吗?

5 个答案:

答案 0 :(得分:10)

使用Jquery 1.5.1和JQuery-ui 1.8.10,以下内容适用于我:

select: function (event, ui) {
                event.preventDefault() // <===
                window.location.href = ui.item.value;
                $(this).val('');                
            }

答案 1 :(得分:2)

$(this).val(''); 

而不是

$(this).val() = "";

答案 2 :(得分:1)

我发现解决这个问题的唯一方法是使用旧的JQuery 1.4.1 dll以及新的JQuery UI dll,版本1.8.11,我认为有一个但是在版本1.4之后的JQuery dll .1导致此问题。如果是这样,未来的版本可能会修复它。

答案 3 :(得分:0)

这适合我...

jQuery('.SELECETOR'). autocomplete({
   ....
   ....
}).on( "autocompleteselect", function( event, ui ) {
               jQuery(this).val('');
         });

答案 4 :(得分:0)

这对我有用:

jQuery('.SELECTOR'). autocomplete({
    // Code
}).on( "autocompleteselect", function( event, ui ) {
    jQuery(this).val('');
});