Bagaimana Anda tahu jika caps lock aktif menggunakan JavaScript?
Namun satu peringatan: Saya melakukan google itu dan solusi terbaik yang bisa saya temukan adalah melampirkan onkeypress
acara untuk setiap input, kemudian memeriksa setiap kali apakah huruf yang ditekan adalah huruf besar, dan jika ya, maka periksa apakah shift juga ditekan. Jika tidak, maka caps lock harus diaktifkan. Ini terasa sangat kotor dan hanya ... boros - pasti ada cara yang lebih baik dari ini?
javascript
keyboard
capslock
nickf
sumber
sumber
input type=password
bidang (mirip dengan validasi alamat email untukinput type=email
di krom, dll)Jawaban:
Anda dapat mencobanya .. Menambahkan contoh yang berfungsi. Saat fokus pada input, menyalakan caps lock membuat led menjadi merah jika tidak hijau. (Belum diuji di mac / linux)
CATATAN: Kedua versi berfungsi untuk saya. Terima kasih atas masukan yang membangun dalam komentar.
VERSI LAMA: https://jsbin.com/mahenes/edit?js,output
Juga, ini adalah versi yang dimodifikasi (dapat seseorang menguji di mac dan mengonfirmasi)
VERSI BARU: https://jsbin.com/xiconuv/edit?js,output
VERSI BARU:
VERSI LAMA:
function isCapslock (e) {
}
Untuk karakter internasional, cek tambahan dapat ditambahkan untuk tombol-tombol berikut ini sesuai kebutuhan. Anda harus mendapatkan rentang kode kunci untuk karakter yang Anda minati, mungkin dengan menggunakan array keymapping yang akan menampung semua kunci kasus penggunaan yang valid yang Anda tangani ...
huruf besar AZ atau 'Ä', 'Ö', 'Ü', huruf kecil aZ atau 0-9 atau 'ä', 'ö', 'ü'
Kunci di atas hanyalah representasi sampel.
sumber
Di jQuery,
Hindari kesalahan, seperti kunci backspace,
s.toLowerCase() !== s
diperlukan.sumber
Anda dapat menggunakan a
KeyboardEvent
untuk mendeteksi banyak kunci termasuk kunci tutup pada sebagian besar browser terbaru.The
getModifierState
Fungsi akan memberikan negara untuk:Demo ini berfungsi di semua browser utama termasuk ponsel ( caniuse ).
sumber
Anda dapat mendeteksi caps lock menggunakan "huruf besar dan tidak ada shift ditekan" dengan menggunakan penekanan tombol pada dokumen. Tetapi kemudian Anda lebih baik memastikan bahwa tidak ada pawang tombol penekanan lain yang meletuskan gelembung acara sebelum sampai ke pawang pada dokumen.
Anda bisa mengambil acara selama fase penangkapan di browser yang mendukung itu, tetapi tampaknya tidak ada gunanya karena tidak akan berfungsi pada semua browser.
Saya tidak bisa memikirkan cara lain untuk benar-benar mendeteksi status caps lock. Pemeriksaannya sederhana saja dan jika karakter yang tidak terdeteksi diketik, ya ... maka mendeteksi itu tidak perlu.
Ada artikel tentang 24 cara tentang ini tahun lalu. Cukup bagus, tetapi tidak memiliki dukungan karakter internasional (gunakan
toUpperCase()
untuk menyiasati itu).sumber
Banyak jawaban yang ada akan memeriksa caps lock aktif ketika shift tidak ditekan tetapi tidak akan memeriksanya jika Anda menekan shift dan mendapatkan huruf kecil, atau akan memeriksa untuk itu tetapi tidak juga akan memeriksa caps lock dimatikan, atau akan memeriksa tetapi akan menganggap kunci non-alfa sebagai 'tidak aktif'. Berikut ini adalah solusi jQuery yang diadaptasi yang akan menampilkan peringatan jika kunci alpha ditekan dengan huruf besar (bergeser atau tidak bergeser), akan mematikan peringatan jika tombol alfa ditekan tanpa huruf besar, tetapi tidak akan mematikan peringatan atau ketika angka atau tombol lainnya ditekan.
sumber
Di JQuery. Ini mencakup penanganan acara di Firefox dan akan memeriksa karakter huruf besar dan kecil yang tidak terduga. Ini mengandaikan
<input id="password" type="password" name="whatever"/>
elemen dan elemen terpisah dengan id 'capsLockWarning
' yang memiliki peringatan yang ingin kami tampilkan (tetapi disembunyikan sebaliknya).sumber
keypress
acara tersebut untuk menggunakan selubung berbeda pada input, karena keduanyakeydown
dankeyup
akan selalu mengembalikan huruf besar . Akibatnya, ini tidak akan memecat tombol capslock ... jika Anda bermaksud untuk menggabungkan dengane.originalEvent.getModifierState('CapsLock')
Jawaban teratas di sini tidak berfungsi untuk saya karena beberapa alasan (kode tidak dikomentari dengan tautan mati dan solusi tidak lengkap). Jadi saya menghabiskan beberapa jam untuk mencoba semua orang dan mendapatkan yang terbaik yang bisa saya lakukan: ini milik saya, termasuk jQuery dan non-jQuery.
jQuery
Perhatikan bahwa jQuery menormalkan objek acara sehingga beberapa pemeriksaan hilang. Saya juga mempersempitnya ke semua bidang kata sandi (karena itulah alasan terbesar untuk membutuhkannya) dan menambahkan pesan peringatan. Ini telah diuji di Chrome, Mozilla, Opera, dan IE6-8. Stabil dan menangkap semua kondisi capslock KECUALI ketika angka atau spasi ditekan.
Tanpa jQuery
Beberapa solusi jQuery-kurang lainnya tidak memiliki fallbacks IE. @Zappa menambalnya.
Catatan: Lihat solusi @Borgar, @Joe Liversedge, dan @Zappa, dan plugin yang dikembangkan oleh @Pavel Azanov, yang belum saya coba tetapi merupakan ide yang bagus. Jika seseorang mengetahui cara untuk memperluas cakupan di luar A-Za-z, harap sunting. Juga, versi jQuery dari pertanyaan ini ditutup sebagai duplikat, jadi itu sebabnya saya memposting keduanya di sini.
sumber
Kami gunakan
getModifierState
untuk memeriksa caps lock, itu hanya anggota acara mouse atau keyboard sehingga kami tidak dapat menggunakanonfocus
. Dua cara yang paling umum untuk bidang kata sandi untuk mendapatkan fokus adalah dengan mengklik atau tab. Kami menggunakanonclick
untuk memeriksa klik mouse dalam input, dan kami menggunakanonkeyup
untuk mendeteksi tab dari bidang input sebelumnya. Jika bidang kata sandi adalah satu-satunya bidang pada halaman dan fokus otomatis maka peristiwa tersebut tidak akan terjadi sampai kunci pertama dilepaskan, yang ok tapi tidak ideal, Anda benar-benar ingin caps caps tool tips untuk ditampilkan setelah bidang kata sandi bertambah fokus, tetapi untuk sebagian besar kasus solusi ini berfungsi seperti pesona.HTML
JS
https://codepen.io/anon/pen/KxJwjq
sumber
event.getModifierState("CapsLock").
Saya tahu ini adalah topik lama tetapi saya pikir saya akan memberi umpan balik jika itu membantu orang lain. Tidak ada jawaban untuk pertanyaan yang tampaknya berfungsi di IE8. Namun saya menemukan kode ini yang berfungsi di IE8. (Havent menguji apa pun di bawah IE8). Ini dapat dengan mudah dimodifikasi untuk jQuery jika diperlukan.
Dan fungsinya dipanggil melalui event onkeypress seperti ini:
sumber
Ini adalah solusi yang, selain memeriksa keadaan saat menulis, juga mengaktifkan pesan peringatan setiap kali Caps Lock tombol ditekan (dengan beberapa batasan).
Ini juga mendukung huruf non-Inggris di luar rentang AZ, karena memeriksa karakter string terhadap
toUpperCase()
dantoLowerCase()
bukannya memeriksa terhadap rentang karakter.Perhatikan bahwa mengamati togel kunci penguncian hanya berguna jika kita mengetahui keadaan kunci caps sebelum Caps Lockkunci ditekan. Status kunci caps saat ini disimpan dengan
caps
properti JavaScript pada elemen kata sandi. Ini diatur saat pertama kali kami memiliki validasi status caps lock ketika pengguna menekan huruf yang bisa menjadi huruf besar atau kecil. Jika jendela kehilangan fokus, kita tidak lagi dapat mengamati toggling kunci caps, jadi kita perlu mengatur ulang ke keadaan yang tidak diketahui.sumber
Baru-baru ini ada pertanyaan serupa di hashcode.com, dan saya membuat plugin jQuery untuk menghadapinya. Ini juga mendukung pengenalan caps lock pada angka. (Pada kunci papan tombol tata letak Jerman standar memiliki efek pada angka).
Anda dapat memeriksa versi terbaru di sini: jquery.capsChecker
sumber
Untuk jQuery dengan bootstrap twitter
Periksa batas huruf untuk karakter berikut:
huruf besar AZ atau 'Ä', 'Ö', 'Ü', '!', '",' § ',' $ ','% ',' & ',' & ',' / ',' (',') ' , '=', ':', ';', '*', '' '
huruf kecil aZ atau 0-9 atau 'ä', 'ö', 'ü', '.', ',', '+', '#'
demo langsung di jsfiddle
sumber
Variabel yang menunjukkan status caps lock:
bekerja di semua browser => canIUse
sumber
Jawaban berbasis jQuery ini diposting oleh @ user110902 berguna bagi saya. Namun, saya sedikit memperbaikinya untuk mencegah cacat yang disebutkan dalam komentar @B_N: gagal mendeteksi CapsLock saat Anda menekan Shift:
Seperti ini, ini akan berfungsi bahkan saat menekan Shift.
sumber
Kode ini mendeteksi caps lock terlepas dari kasing atau jika tombol shift ditekan:
sumber
Saya menulis sebuah perpustakaan bernama capsLock yang melakukan persis apa yang Anda inginkan.
Cukup sertakan di halaman web Anda:
Kemudian gunakan sebagai berikut:
Lihat demo: http://jsfiddle.net/3EXMd/
Status diperbarui ketika Anda menekan tombol Caps Lock. Ini hanya menggunakan hack tombol Shift untuk menentukan status yang benar dari tombol Caps Lock. Awalnya statusnya adalah
false
. Waspadalah.sumber
Namun versi lain, jelas dan sederhana, menangani capsLock bergeser, dan tidak terbatas pada ascii saya pikir:
Sunting: Sense of capsLockOn dibalik, doh, diperbaiki.
Sunting # 2: Setelah memeriksa ini lagi, saya telah membuat beberapa perubahan, sedikit lebih detail kode sayangnya, tetapi menangani lebih banyak tindakan dengan tepat.
Menggunakan e.charCode alih-alih e.keyCode dan memeriksa nilai 0 melompati banyak penekanan tombol non-karakter, tanpa mengkode apa pun yang spesifik ke bahasa atau rangkaian karakter tertentu. Dari pemahaman saya, ini sedikit kurang kompatibel, jadi browser yang lebih tua, non-mainstream, atau mobile mungkin tidak berperilaku seperti yang diharapkan oleh kode ini, tetapi tetap sepadan, untuk situasi saya.
Memeriksa daftar kode tanda baca yang diketahui mencegahnya dilihat sebagai negatif palsu, karena tidak terpengaruh oleh caps lock. Tanpa ini, indikator caps lock disembunyikan ketika Anda mengetik karakter tanda baca mana pun. Dengan menentukan set yang dikecualikan, bukan yang termasuk, itu harus lebih kompatibel dengan karakter yang diperluas. Ini adalah bit yang paling jelek, paling khusus, dan ada beberapa kemungkinan bahwa bahasa non-Barat memiliki tanda baca dan / atau tanda baca yang cukup berbeda untuk menjadi masalah, tapi sekali lagi itu layak untuk IMO, setidaknya untuk situasi saya.
sumber
Reaksi
sumber
Berdasarkan jawaban @ joshuahedlund karena itu berfungsi dengan baik untuk saya.
Saya membuat kode fungsi sehingga dapat digunakan kembali, dan menautkannya ke tubuh dalam kasus saya. Itu dapat ditautkan ke bidang kata sandi hanya jika Anda mau.
sumber
Mottie ini dan Diego Vieira respon atas adalah apa yang kami akhirnya menggunakan dan harus menjadi jawaban diterima sekarang. Namun, sebelum saya menyadarinya, saya menulis fungsi javascript kecil ini yang tidak bergantung pada kode karakter ...
Kemudian menyebutnya dalam event handler seperti itu
capsLockIsOnKeyDown.capsLockIsOnKeyDown(event)
Tetapi sekali lagi, kami akhirnya hanya menggunakan tanggapan @Mottie s dan @Diego Vieira
sumber
Dalam kode di bawah ini akan ditampilkan peringatan ketika Caps mengunci dan mereka menekan tombol menggunakan shift.
jika kita mengembalikan false; maka char saat ini tidak akan ditambahkan ke halaman teks.
sumber
coba kode sederhana ini dengan mudah dimengerti
Ini Naskahnya
Dan html
sumber
coba gunakan kode ini.
Semoga berhasil :)
sumber
Anda dapat menggunakan skrip ini . Ini harus bekerja dengan baik pada Windows bahkan jika tombol Shift ditekan tetapi itu tidak akan bekerja pada Mac OS jika demikian.
sumber
Berikut adalah plugin jquery khusus, menggunakan jquery ui, yang terdiri dari semua ide bagus di halaman ini dan memanfaatkan widget tooltip. Pesan caps lock diterapkan secara otomatis ke semua kotak kata sandi dan tidak memerlukan perubahan pada html Anda saat ini.
Kode plug in khusus ...
Terapkan ke semua elemen kata sandi ...
sumber
Kode Javascript
Kita sekarang harus mengaitkan skrip ini menggunakan Html
sumber
sudah terlambat saya tahu tetapi, ini bisa membantu orang lain.
jadi di sini adalah solusi paling sederhana saya (dengan karakter Turki);
sumber
Jadi saya menemukan halaman ini dan tidak terlalu menyukai solusi yang saya temukan jadi saya menemukan satu dan menawarkannya kepada Anda semua. Bagi saya, itu hanya masalah jika caps lock aktif jika saya mengetik huruf. Kode ini memecahkan masalah bagi saya. Ini cepat dan mudah dan memberi Anda variabel capsIsOn untuk referensi kapan pun Anda membutuhkannya.
sumber
Saat Anda mengetik, jika caplock aktif, kap karakter saat ini dapat dikonversi menjadi huruf kecil. Dengan begitu, bahkan jika caplock aktif, tidak akan berperilaku seperti itu pada halaman saat ini. Untuk memberi tahu pengguna Anda, Anda dapat menampilkan teks yang mengatakan bahwa caplock aktif, tetapi bahwa entri formulir dikonversi.
sumber
Ada solusi yang jauh lebih sederhana untuk mendeteksi caps-lock:
sumber