4

特別な機会にフォームが送信されないようにリスナーを作成しました。

GoogleマップのオートコンプリートAPIを使用していますが、基本的に、ユーザーがEnterキーを押して「推奨結果ボックス」が表示されたときに、フォームを送信したくありません。ユーザーがEnterキーを押しているときに、ドロップダウンボックスから値を選択し、フォームを送信しません。

イベントを正しくキャッチするリスナーを作成しましたが、フォームが送信されないようにする方法がわかりません。

$('body').live('keydown', function(e) {
    if($(".pac-container").is(":visible") && event.keyCode == 13) {
        e.preventDefault(); // Prevent form submission
        }
    });

e.preventDefault();で試してみました。ただし、フォームは送信されます。フォームIDは次のとおりです。updateAccountForm

どうすればそれを防ぐことができますか?

編集:検索入力で直接キー押下をリッスンすると、オートコンプリート機能を無効にするGoogleAPIと競合するように思われることを指摘する必要があります。したがって、$('input#search')キーダウン/キープレスはできません

4

6 に答える 6

5

解決策は実際には非常に単純でした。すべてのリスナーは失敗したようですが、次のように追加します。

onkeydown="if($('.pac-container').is(':visible') && event.keyCode == 13) {event.preventDefault();}"

入力に直接トリックを行いました。

于 2012-08-10T09:37:52.057 に答える
4

このようなものを使ってみるべきだと思います…コンテナの可視性をチェックするためにラッピングします

$('body').keypress(function(e) 
{
  if (e.keyCode == '13') {
     e.stopPropagation()

   }
});​

ここの記事には良い説明があります。

于 2012-08-10T08:55:11.817 に答える
2

これを試して

$('body').live('keydown', function(e) {
    if($(".pac-container").is(":visible") && e.keyCode == 13) {
        e.stopPropagation(); // Prevent form submission
    }
});

e.keyCode の代わりに.keyCodeeventを参照してください。e.stopPropagation()e.preventDefault

于 2012-08-10T09:23:24.227 に答える
1

Enter キーがGoogle Places API オートコンプリートのテキスト フィールドでフォームを送信しないようにするには、キーダウンハンドラが必要でした...

$(document).on('keydown', '#my-autocomplete', function(e) {
    if (e.which == 13) {
      $('#my-autocomplete').show();
      return false;
    }
});

...そして、インスタンス化された後にオートコンプリートにアタッチされたplace_changedリスナー:

var my_autocomplete = new google.maps.places.Autocomplete(/*...*/);
google.maps.event.addListener(my_autocomplete, 'place_changed', function() {
    var place = my_autocomplete.getPlace();
    if (!place.place_id) { return; }
});

重要ではありませんが、このソリューションは jQuery Mobile Web アプリ内で機能する可能性があります。

于 2015-04-08T13:08:35.927 に答える
0

フォーム送信の防止

 <form method="post">
    <input type="text" id="search">

    </form>
​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
    <script>
        $('input#search').keypress(function(e) {
          if (e.keyCode == '13') {
             e.preventDefault();

           }
        });​
    </script>
于 2012-08-10T08:54:40.850 に答える