2011-08-17 14 views
7

コード例ここでぼかした後、入力したのと同じ文字():http://jsbin.com/etaziyあなたが「J」あなたが3名を取得して入力すると、「ジョン」 'jqueryのUIの.autocomplete()発射ないとき

http://jqueryui.com/demos/autocomplete/を使用して)ジャックとジョー。あなたがぼやけてしまったら、入力をクリアするだけで、入力をval( '')にするだけです。その後、入力に戻って 'j'をもう一度入力すると、何も起こりません。それはあなたがポップアップを表示する2番目の一致する文字を入力するまでではありません。

私の例はちょっと奇妙に思えるかもしれませんが、本質的にこれは私が取り組んでいるものの切り詰めたものです。私はblur()の後に入力をクリアし、選択が行われた後にそれをクリアする必要があります。これを実行すると、その後の選択がバグのように見えます。

私は部分的にこれが意図された機能だと思っていますが、私の目的のために、私が望むものではありません。私は実際に手紙が入力されるとすぐに表示するリストをポップアップする必要があります。

乾杯。

答えて

10

問題は、オートコンプリートが内部的に一致する値を記録していることです。最初にjと入力すると、この内部値が「j」に設定され、空の文字列にリセットされませんでした入力を空に変更しました。

オートコンプリートソースを見た後、内部変数に直接アクセスする方法を見つけることができませんでしたが、入力を変更した後に別の検索を実行することでオートコンプリートを強制的に更新できます空(そして長さがゼロの場合、実際には検索を行いません)。

$(function() { 
    $("#search").autocomplete({ 
       source: data, 
       change: function() { // Triggered when the field is blurred, if the value has changed; ui.item refers to the selected item. 
         $("#search").val(""); 
         $("#search").autocomplete("search", ""); //THIS IS THE NEW LINE THAT MAKES IT HAPPY 
       } 
     }); 
}); 
4

だけif(true){

jquery.ui.autocomplete.js

if (self.term != self.element.val()) { // only search if the value has changed 

にライン98を交換します

関連する問題