0

私は次のような入力ハンドラーを持っています:

$('.submit-on-enter').keydown(function (e) {
  if (e.keyCode == 13) {
    var id = $(this).attr('id');
    $('input[type=submit][for=' + id + ']').click();
  }
});

これは、複数のボタンがあるフォームです。私が抱えている問題は、フォームがサーバーにヒットしたときに、「クリック」されたボタンではなく、最初のボタンがそこにあるということです。上記のハンドラーのIDが予期されたIDであることを確認しました。

そして明確にするために、私はボタンサーバー側のname属性の存在をチェックして、どのボタンがクリックされたかを判別しています。ページの最初のボタンの名前は、関係なく常にそこにあります。

何か案は?

4

1 に答える 1

0

これが解決策です。イベントの変化に注意してください。キーダウンでは、Chromeでフォーム送信イベントを停止できないようです。

$('.submit-on-enter').keypress(function (e) {
  if (e.keyCode == 13) {
    e.preventDefault();
    var id = $(this).attr('id');
    var name = $('input[type=submit][for=' + id + ']').attr('name');
    $('input[type=submit][for=' + id + ']').click();
  }
});
于 2013-03-20T15:53:22.180 に答える