ある特定の画面で、Enterキーやスペースを押すだけでなく、ユーザーがマウスを使用してボタンをクリックしたことを確認する必要があるWebアプリケーションがあります。
私はこのコードを書きました:
$('button').keydown(function (e) {
if (e.which === 10 || e.which === 13 || e.which === 32) {
return false;
}
});
ただし、これはEnterに対してのみ機能します。ボタンのスペースを押すと、フォームを送信できます。何がこの不一致を引き起こしたのか、そしてそれをどのように回避するのか疑問に思っていますか?
編集:
フィドルの例:http://jsfiddle.net/billccn/3JmtY/1/。2番目のチェックボックスをオンにして、ボタンにフォーカスがあるときにEnterキーを押しても効果はありません。さらに入力を無効にして、キーダウントラップをフォーム全体に展開すると、Enterを使用してフォームを送信できなくなります。
編集2:
ボタンをリンクまたはプレーンなdivに置き換え、クリックイベントを使用してプログラムでフォームを送信するバックアップ計画があります。ただし、ボタンのように見せるためには余分な作業が必要なので、ボタンを使用したいのですが可能です。