if(characterCode == 13)
{
return false; // returning false will prevent the event from bubbling up.
}
else
{
return true;
}
Oke, jadi bayangkan Anda memiliki kotak teks berikut dalam formulir:
<input id="scriptBox" type="text" onkeypress="return runScript(event)" />
Untuk menjalankan beberapa skrip "yang ditentukan pengguna" dari kotak teks ini ketika tombol enter ditekan, dan belum ada yang mengirimkan formulir, berikut adalah beberapa contoh kode. Harap dicatat bahwa fungsi ini tidak melakukan pengecekan kesalahan dan kemungkinan besar hanya akan berfungsi di IE. Untuk melakukan ini dengan benar, Anda memerlukan solusi yang lebih kuat, tetapi Anda akan mendapatkan ide umum.
function runScript(e) {
//See notes about 'which' and 'key'
if (e.keyCode == 13) {
var tb = document.getElementById("scriptBox");
eval(tb.value);
return false;
}
}
mengembalikan nilai fungsi akan mengingatkan event handler untuk tidak menggelembungkan acara lebih jauh, dan akan mencegah acara penekanan tombol ditangani lebih lanjut.
CATATAN:
Sudah keluar menunjuk bahwa keyCode
yang sekarang usang . Alternatif terbaik berikutnya which
telah juga telah usang .
Sayangnya standar yang disukai key
, yang banyak didukung oleh browser modern, memiliki beberapa perilaku yang cerdik di IE dan Edge . Apa pun yang lebih tua dari IE11 masih membutuhkan polyfill .
Selain itu, meskipun peringatan yang sudah usang cukup tidak menyenangkan keyCode
dan which
, menghapusnya akan merupakan perubahan besar pada sejumlah besar situs web warisan. Karena itu, tidak mungkin mereka pergi ke mana saja dalam waktu dekat.
eval
isinya dengan menekan tombol tidak berbeda dengan jika mereka membuka alat pengembang dan melakukannya. Jika ini adalah sesuatu yang diselamatkan ke dalam DB dan bisa dibuka oleh pengguna LAIN , maka itu akan menjadi masalah besar, tapi itu masalah yang sepenuhnya independen dari cuplikan kecil ini.keyCode
sekarang sudah tidak digunakan lagiGunakan keduanya
event.which
danevent.keyCode
:sumber
which
orang lainkeyCode
. Ini adalah praktik yang baik untuk memasukkan keduanya.keydown
acara sebagai gantikeyup
ataukeypress
Jika Anda menggunakan jQuery:
sumber
preventDefault
sepertinya tidak menghentikan pengiriman formulir, setidaknya di Chrome.$('input[type=text]').on('keydown', function(e) { if (e.which == 13) { e.preventDefault(); } });
'keydown'
benar karena komentator lain menyatakan. Karena belum diubah saya akan memperbarui jawabannya. Saya menggunakan jawaban ini dan macet selama beberapa saat sampai saya kembali dan melihat komentar.event.key === "Enter"
Lebih baru dan lebih bersih: gunakan
event.key
. Tidak ada lagi kode angka yang berubah-ubah!Mozilla Docs
Browser yang Didukung
sumber
keyCode
sudah ditinggalkan. Ini lebih mudah dibaca dan dipelihara daripada bilangan bulat ajaib dalam kode AndaDeteksi tombol Enter ditekan pada seluruh dokumen:
http://jsfiddle.net/umerqureshi/dcjsa08n/3/
sumber
Mengganti
onsubmit
aksi formulir menjadi panggilan ke fungsi Anda dan menambahkan return false setelahnya, yaitu:sumber
Solusi js bereaksi
sumber
Jadi mungkin solusi terbaik untuk menutupi sebanyak mungkin browser dan menjadi bukti di masa depan
sumber
jika Anda ingin melakukannya menggunakan skrip java murni di sini adalah contoh yang berfungsi dengan baik
Katakanlah ini adalah file html Anda
di file popup.js Anda cukup gunakan fungsi ini
sumber
Kode di bawah ini akan menambah pendengar untuk
ENTER
kunci di seluruh halaman.Ini bisa sangat berguna di layar dengan satu tombol Aksi misalnya Login, Daftar, Kirim dll.
Diuji pada semua browser.
sumber
Solusi jQuery.
Saya datang ke sini mencari cara untuk menunda pengiriman formulir sampai setelah kejadian blur pada input teks dipecat.
Akan menyenangkan untuk mendapatkan versi yang lebih umum yang memecat semua acara yang tertunda daripada hanya mengirimkan formulir.
sumber
Cara yang jauh lebih sederhana dan efektif dari sudut pandang saya adalah:
sumber
Menggunakan TypeScript, dan menghindari panggilan multipel pada fungsi
sumber
Sedikit sederhana
Jangan kirim formulir pada penekanan tombol "Enter":
Jalankan fungsi pada penekanan tombol "Enter":
sumber
js asli (ambil api)
sumber
Tambahkan Kode ini di Halaman HTML Anda ... itu akan menonaktifkan ... Enter Button ..
sumber
sumber
Solusi Lintas Browser
Beberapa browser lama menerapkan peristiwa keydown dengan cara yang tidak standar.
which
dankeyCode
sudah usang saat ini, tetapi tidak ada salahnya untuk memeriksa peristiwa ini meskipun demikian kode tersebut berfungsi untuk pengguna yang masih menggunakan browser lama seperti IE.The
isKeyPressed
cek fungsi jika kunci ditekan itu masuk danevent.preventDefault()
menghalangi bentuk dari mengirimkan.Contoh kerja minimal
JS
HTML
https://jsfiddle.net/tobiobeck/z13dh5r2/
sumber