2016-11-06 9 views
0

私はウィキペディアの記事を検索するページを作成しました。ボタン検索をクリックしたとき、または入力フォームの中でEnterキーを押すと、ページ検索が必要になります。問題は、Enterキーが最初にボタンの検索をクリックした場合にのみ機能することです。なぜですか?jqueryのkeypressイベントが正常に動作しない

ページ:http://codepen.io/Juan1417/pen/XNJeWd

$(document).ready(function(){ 

     $("#searchTerm").keypress(function(e){ 

     if(e.which==13) $("#search").click(); 

     }); 

     $("#search").click(function(){ 

     var searchTerm=$("#searchTerm").val(); 

     var url="https://en.wikipedia.org/w/api.php?action=opensearch&search="+searchTerm+"&format=json&callback=?"; 

     $.ajax({ 

      type:"GET", 
      url:url, 
      async:false, 
      dataType:"json", 
      success:function(data){ 

      for(var i=0;i<data[1].length;i++){ 

      $("#output").prepend("<li><a href="+data[3][i]+" target='_blank'>"+data[1][i]+"</a><br><span>"+data[3][i]+"</span><br>"+data[2][i]+"</p></li>"); 

      } 

      }, 

      error:function(errorMessage){ 

      alert(errorMessage); 

      } 

     }); 

     }); 

    }); 

答えて

0

(そのフォームが送信された)入力後に実行するための機能を停止されていないように思えます。

if(e.which==13) { 
    $("#search").click(); 
    e.preventDefault(); 
    return false; 
} 
+0

stopPropagationとは何ですか? – Juan

+0

'stopPropagation'は、キャプチャフェーズとバブリングフェーズでの現在のイベントのさらなる伝播を防ぎます。 (https://developer.mozilla.org/en/docs/Web/API/Event/stopPropagation) 代わりに 'preventDefault'を使用してください。私の間違いは、申し訳ありませんが、私は答えを更新しました。 'preventDefault'は、イベントの更なる伝播を止めることなく、キャンセル可能である場合にイベントをキャンセルします。 (https://developer.mozilla.org/en/docs/Web/API/Event/preventDefault) – rafaelcastrocouto

+0

'return false'は、ほとんどの古いブラウザで実際に仕事をするものであることに注意してください。http:// caniuse。 com /#search = preventDefault – rafaelcastrocouto

関連する問題