2011-03-21 63 views
6

我們正在使用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

回答

1

我發現解決這個問題是使用舊的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://stackoverflow.com/a/5648954/1063730 – yoshi 2012-11-30 12:22:10

2
$(this).val(''); 

,而不是

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

謝謝 - 我應該提到我已經在帖子前嘗試過,結果是一樣的。 – 2011-03-21 20:01:59

+0

奇怪的是,這對我有用,我不知道'val()'是如何工作的,但顯然不像我想的那麼簡單。 – 2014-10-17 16:23:01

10

使用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

0

這個工作對我來說...

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

這個工作對我來說:

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