Larang masukkan kunci di mana saja
Jika Anda tidak memiliki <textarea>
di formulir Anda, maka tambahkan saja yang berikut ke Anda <form>
:
<form ... onkeydown="return event.key != 'Enter';">
Atau dengan jQuery:
$(document).on("keydown", "form", function(event) {
return event.key != "Enter";
});
Ini akan menyebabkan setiap tombol yang ditekan di dalam formulir akan diperiksa pada key
. Jika tidak Enter
, maka ia akan kembali true
dan apa pun terus seperti biasa. Jika ya Enter
, maka akan kembali false
dan segala sesuatu akan segera berhenti, sehingga formulir tidak akan dikirimkan.
The keydown
event lebih disukai keyup
sebagai keyup
terlambat untuk bentuk blok kirimkan. Secara historis ada juga keypress
, tetapi ini sudah usang, seperti halnya KeyboardEvent.keyCode
. Anda harus menggunakan KeyboardEvent.key
yang mengembalikan nama tombol yang ditekan. Ketika Enter
dicentang, maka ini akan memeriksa 13 (normal masuk) serta 108 (numpad masuk).
Perhatikan bahwa $(window)
seperti yang disarankan dalam beberapa jawaban lain, bukannya $(document)
tidak bekerja untuk keydown
/ keyup
di IE <= 8, jadi itu bukan pilihan yang baik jika Anda ingin mencakup pengguna yang buruk juga.
Izinkan tombol enter hanya di teks saja
Jika Anda memiliki <textarea>
dalam formulir Anda (yang tentu saja harus menerima tombol Enter), kemudian tambahkan pengendali keydown ke setiap elemen input individu yang bukan a <textarea>
.
<input ... onkeydown="return event.key != 'Enter';">
<select ... onkeydown="return event.key != 'Enter';">
...
Untuk mengurangi boilerplate, ini lebih baik dilakukan dengan jQuery:
$(document).on("keydown", ":input:not(textarea)", function(event) {
return event.key != "Enter";
});
Jika Anda memiliki fungsi event handler lain yang dilampirkan pada elemen input tersebut, yang Anda juga ingin memohon pada tombol enter karena beberapa alasan, maka hanya mencegah perilaku default acara daripada mengembalikan false, sehingga dapat dengan benar menyebar ke penangan lain.
$(document).on("keydown", ":input:not(textarea)", function(event) {
if (event.key == "Enter") {
event.preventDefault();
}
});
Izinkan tombol enter di textareas dan kirimkan tombol saja
Jika Anda ingin mengizinkan tombol enter pada tombol kirim <input|button type="submit">
juga, maka Anda selalu dapat memperbaiki pemilih seperti di bawah ini.
$(document).on("keydown", ":input:not(textarea):not(:submit)", function(event) {
// ...
});
Perhatikan bahwa input[type=text]
seperti yang disarankan dalam beberapa jawaban lain tidak mencakup input non-teks HTML5 itu, jadi itu bukan pemilih yang baik.