Artikel ini menjelaskan metode JavaScript yang mengendalikan format waktu input. Bagikan untuk referensi Anda. Analisis spesifiknya adalah sebagai berikut:
Saya biasa membuat input JavaScript untuk mengontrol format waktu, terutama menggunakan acara Keydown dan Keyup, tetapi saya merasa bahwa tulisan itu sangat rumit dan ada bug.
Hari ini saya belajar tentang perbedaan antara peristiwa keypress dan keydown dan keyup. Ini kira -kira sebagai berikut (hanya tahu banyak saat ini):
Keydown: dipicu saat tombol ditekan. Melalui acara, Anda bisa mendapatkan kode kunci dan mendapatkan nilai sebelum input ke kotak teks;
Keyup: dipicu saat kunci muncul (rilis). Kode kunci dapat diperoleh melalui acara dan nilai setelah input dari kotak teks dapat diperoleh;
Keypress: Acara ini pada dasarnya sama di Chrome dan IE, tetapi Firefox sedikit berbeda;
1. Dalam Chrome dan IE: Selama kunci yang ditekan dapat muncul karakter dalam kotak teks, itu akan dipicu (seperti huruf input, angka, simbol, dll.), Kode kunci dapat diperoleh melalui acara, dan acara. Key tidak terdefinisi; Jika karakter tidak dapat muncul, itu tidak akan dipicu (seperti tombol panah, rumah, backspace, dll.)
2. Di Firefox: Kunci seperti huruf, angka, simbol, arah, backspaces, dll. Semua dapat memicu. Nama kunci dapat diperoleh melalui event.key. Jika tombol yang ditekan dapat output karakter, event.keycode adalah 0. Jika karakter tidak dapat output, event.keycode adalah kode ASCII yang sesuai.
Kembali ke topik, lihat kode terlebih dahulu (acara yang disebutkan di atas setara dengan E dalam kode berikut):
Salinan kode adalah sebagai berikut: var isff = /firefox/i.test(navigator.useragent);
$ ("input"). on ({
Keyup: function (e) {
!/^[/D:]+$/.
},
Keypress: function (e) {
if (isff && e.keycode! == 0) {
/// Menekan tombol apa pun di Firefox akan memicu acara KeyPress, sedangkan di IE/Chrome hanya akan memicu kunci yang dapat mengeluarkan karakter
/// untuk firefox, e.keycode! == 0 menekan salah satu backspace, arah, rumah dan kunci lainnya.
} kalau tidak {
if (e.target.value.length> 7)
mengembalikan false;
if (//d{2}/.test(e.target.value)) {
E.Target.Value += ':';
}
var char = string.fromCharCode (e.keycode === 0? E. yang: e.keycode);
if (!/^/d/.test (char))
mengembalikan false;
}
}
});
Isff && e.keycode! == 0 digunakan untuk membedakan antara kunci yang dapat menghasilkan karakter dalam firefox dan kunci yang tidak dapat mengeluarkan karakter. Karena E.Keycode di Firefox mungkin tidak harus memperoleh nilainya, E. yang digunakan sebagai gantinya.
Keyup digunakan untuk menangani masalah untuk dapat memasukkan bahasa Cina atau huruf saat menggunakan metode input.
Gunakan String.FromCharCode () untuk mendapatkan karakter yang sesuai dengan kode ASCII.
Saya harap artikel ini akan membantu pemrograman JavaScript semua orang.