Saya memiliki formulir login standar rawa - bidang teks email, bidang kata sandi, dan tombol kirim pada proyek AIR yang menggunakan HTML / jQuery. Ketika saya menekan Enter pada formulir, seluruh isi formulir lenyap, tetapi formulir itu tidak dikirimkan. Adakah yang tahu apakah ini masalah Webkit (Adobe AIR menggunakan WebKit untuk HTML), atau jika saya gagal?
Saya mencoba:
$('.input').keypress(function (e) {
if (e.which == 13) {
$('form#login').submit();
}
});
Tapi itu tidak menghentikan perilaku kliring, atau menyerahkan formulir. Tidak ada tindakan yang terkait dengan formulir - mungkinkah itu masalahnya? Bisakah saya menempatkan fungsi javascript dalam aksi?
Jawaban:
Lihat jawaban stackoverflow ini: event.preventDefault () vs. return false
Pada dasarnya, "return false" sama dengan memanggil
e.preventDefault
dane.stopPropagation()
.sumber
Selain mengembalikan false seperti yang disebutkan Jason Cohen. Anda mungkin juga harus mencegah Kerusakan
sumber
return false
dalam acara yang dikelola oleh jQuery secara otomatis hubungi e.preventDefault ()Tidak tahu apakah itu akan membantu, tetapi Anda dapat mencoba mensimulasikan klik tombol kirim, daripada langsung mengirimkan formulir. Saya memiliki kode berikut dalam produksi, dan berfungsi dengan baik:
Catatan: jQuery ('# submit'). Focus () membuat tombol bernyawa ketika masuk ditekan.
sumber
Kembali
false
untuk mencegah keystroke dari melanjutkan.sumber
Apakah ada alasan Anda harus mengait dan menguji untuk tombol enter?
Tidak bisakah Anda menambahkan
ke formulir Anda dan sudahkah itu disampaikan secara alami ketika masuk didorong? Anda bahkan dapat mengaitkan tindakan formulir
onsubmit
dan memanggil fungsi validasi dari sana jika Anda ingin ...Anda bahkan dapat menggunakan
onsubmit
sebagai tes untuk melihat apakah formulir Anda dikirimkan, tetapi itu tidak akan berfungsi jika Anda meneleponform.submit()
.sumber
return false;
semuanya.Berikut cara untuk melakukan ini sebagai plugin JQuery (jika Anda ingin menggunakan kembali fungsionalitasnya):
Sekarang jika Anda ingin menghias
<input>
elemen dengan jenis fungsi ini sesederhana ini:sumber
Anda juga bisa menambahkan
onsubmit="return false"
kode formulir di halaman untuk mencegah perilaku default.Kemudian kaitkan (
.bind
atau.live
) acara formulirsubmit
ke fungsi apa pun dengan jQuery di file javascript.Berikut ini contoh kode untuk membantu:
HTML
Javascript + jQuery
Ini bekerja pada 2011-04-13, dengan Firefox 4.0 dan jQuery 1.4.3
sumber
Ini kode saya:
sumber
Juga untuk menjaga aksesibilitas, Anda harus menggunakan ini untuk menentukan kode kunci Anda:
sumber
Hanya menambahkan untuk implementasi yang mudah. Anda cukup membuat formulir lalu menyembunyikan tombol kirim:
Sebagai contoh:
sumber
Saya gunakan sekarang
Pada awalnya saya menambahkan eventhandler ke tombol kirim yang menghasilkan kesalahan bagi saya.
sumber
Saya tahu hari ini acara penekanan tombol tidak dipecat ketika menekan tombol Enter, jadi Anda mungkin ingin beralih ke keydown () atau keyup () sebagai gantinya.
Skrip pengujian saya:
Output di konsol saat mengetik "A Enter B" pada keyboard:
Anda melihat dalam urutan kedua 'penekanan tombol' hilang, tetapi keydown dan kode register keyup '13' ditekan / dirilis. Sesuai dokumentasi jQuery pada fungsi keypress () :
Diuji pada IE11 dan FF61 pada Server 2012 R2
sumber
Dalam kode HTML:
Dalam kode Js:
sumber
Coba ini:
sumber