0

オートコンプリートを入力し、「Enter」キーを押すと、何かを検索します。しかし、オートコンプリートがあり、「Enter」を押すと、検索したくありません。実際には、「Enter」を押すと検索が行われます。 enter イベントをキャプチャし、検索機能を実行します。

これは最初の関数です: オートコンプリート コード:

$('input[name=fieldInputName]').autocomplete(names, {
         max: max,    
         minChars: minChars ,   
         width: 149,     
         scrollHeight: 500,   
         matchContains: true,    
         autoFill: false, 
         sortable: true,
         matchSubset :false,
         formatItem: function(row, i, max) {
             return  row[returnSearchkey];
         },
         formatMatch: function(row, i, max) {
             return row[returnSearchkey] ;
         },
         formatResult: function(row) {
            return row[returnSearchkey];
         }
     }).result(function(event, row, formatted) {

     });

これは 2 番目の関数です: 検索を行う pressenter コード:

function pressEnter(e){
        e = e || event;
        if (e.keyCode == 13) {
        submitSearch()();
        }
} 

入力の Html :

 <input onkeyup="pressEnter(event);"type='text' name='createdBy' />

オートコンプリートをトリガーして 'enter' を押して 1 つの項目を選択すると、オートコンプリートが実行され、選択した値が入力されますが、2 番目の関数 "pressEnter(e)" も呼び出されます。オートコンプリートをトリガーしましたが、2 番目の関数 (pressEnter) を実行しませんでした。

4

1 に答える 1

0

DOM 内のイベントは、ツリー内のどこかで開始され、要素に到達します (キャプチャ フェーズ)。その後、DOM をバブルアップします (バブリング フェーズ)。

イベントをキャッチして、伝播を停止できます。その後、さらに伝播されることはなく、ラッピング要素などにアタッチされている他のイベント ハンドラー (2 番目の関数など) を呼び出すこともありません。

オートコンプリートのイベント ハンドラーで、イベントを呼び出す必要がありますstopPropagation()。ただし、これはすべてのブラウザーで機能するわけではありません。IE9 より前の IE では、メソッドが呼び出されcancelBubble(true)ます。

ブラウザのデフォルトの動作を防ぐためにできることevent.preventDefault()

これは JavaScript のトリッキーなトピックであるため、「イベントのキャンセル」または「イベントの伝播」を検索すると、詳細を読むことができます。

于 2013-02-22T09:12:17.073 に答える