选择jQuery UI自动完成后清除表单字段

问题描述:

我们正在使用JQuery UI自动完成,并且在查询完成后清除包含搜索词的文本框时出现问题。这里是我们的jQuery代码:选择jQuery UI自动完成后清除表单字段

$(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脚本调试器。我看到这个堆栈溢出帖子:Clear form field after select for jQuery UI Autocomplete其中说问题的解决方案是从JQuery select函数返回false,但这并没有帮助。任何人都有如何解决这个问题的建议?

+0

我不相信这是官方的jQueryUI自动完成插件(http://jqueryui.com/demos/autocomplete/),因为'parse'选项。是这样吗?如果是这样,你的问题应该可能链接到正确的插件。 – 2011-03-22 02:37:20

+0

@Andrew,感谢您的评论,但我认为它是官方的JQueryUI。我们从JQuery UI站点下载了名为jquery-ui-1.8.5.custom.min.js文件的文件。这个文件有点过时,目前的版本是jquery-ui-1.8.11.custom.min.js,我也下载了它,用最新版本的JQuery尝试过,然后Autocomplete对我来说不起作用。所有。 – 2011-03-22 12:49:01

+0

好吧,jQueryUI小部件上没有'parse'选项(据我所知)。您期望从该选项中获得的功能可能会导致您遇到一些问题(我知道的那种远射)。 – 2011-03-22 13:37:22

我发现解决这个问题是使用旧的JQuery 1.4.1 DLL与新的jQuery UI的dll一起的唯一途径,版本1.8.11,我认为有一个,但在1.4.1版本后的JQuery DLL导致这个问题。如果是这样,也许未来的版本将解决它。

+0

使用jQuery 1.8.2和jqueryUI 1.9.0,在最上面的回答中提到的'event.preventDefault()'技巧对我来说是神奇的。 http://*.com/a/5648954/1063730 – yoshi 2012-11-30 12:22:10

$(this).val(''); 

,而不是

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

谢谢 - 我应该提到我已经在帖子前尝试过,结果是一样的。 – 2011-03-21 20:01:59

+0

奇怪的是,这对我有用,我不知道'val()'是如何工作的,但显然不像我想的那么简单。 – 2014-10-17 16:23:01

使用jQuery 1.5.1和jQuery的UI 1.8.10,我以下工作:

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

是的,它的'PreventDefault'在这里做的伎俩......我很想知道它应该是什么“泡沫”。 – isNaN1247 2012-06-01 17:45:18

+0

preventDefault也帮助了我。谢谢! – 2013-03-07 13:40:32

这个工作对我来说...

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

这个工作对我来说:

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