2012-03-22 17 views
2

私は入力フィールドにオートコンプリートを使用して、ユーザーが入力するテキストと一致する可能性のあるリストを表示し、そのフィールドの下に別の入力フィールドを表示します。ユーザーがテキストを入力し、その下の次のフィールドをクリックすると、オートコンプリートドロップダウンがその入力フィールドをカバーします。フィールドのフォーカスが失われたときにjQueryオートコンプリートを停止する

フィールドにまだフォーカスがあり、フォーカスが失われてオートコンプリートアクションが中止された場合、オートコンプリートドロップダウンを表示したいだけです。

私のコードは次のようなものです。

var inputID = "#"+model+field; 
$(inputID).autocomplete({ 
    source: autoURL, 
    delay: 0, 
    minLength: 1 
}); 

モデルとフィールドは関数の引数として定義されます。

私は、フォーカスの喪失をキャッチして、オートコンプリートをキャンセルするために$(inputID).abort()のようなものを呼び出すイベントを添付することができると思った。または、フォーカスイベントハンドラをその下のフィールドに追加して、アボートをトリガすることができます。私が試したことはありませんでした。私はオートコンプリートのコードを見て、それを止める方法は見当たりません。

私は素晴らしいことだjQueryの1.7.1とjQuery UI 1.8.18

すべてのヘルプを実行していますよ。

おかげで

答えて

1

the documentationによると、あなたはオートコンプリートを閉じるために$(inputID).autocomplete('close');を呼び出すことができます。

+0

他のフィールドがフォーカスを受け取ったときに '$(inputID).autocomplete( 'close')を呼び出そうとしましたが、オートコンプリートajax呼び出しを停止しません。私はドキュメントを読んで、それが表示された後にポップアップを隠すことを意味すると理解しました。私はそれがその点に達するのを防ぎたい。 – cgTag

+0

ソースフィールドにフォーカスがない場合、openイベントからcloseを呼び出すことで、問題なく動作します。 ajax呼び出しを中止しませんが、必要な結果を生成します。 – cgTag

+0

それを聞いてうれしい! –

関連する問題