Jika kekunci kawalan adalah keadaan aktif "kekunci kawalan adalah" off state ", jika kekunci pengesahan ditekan" tiada kawalan "dan" keadaan aktif ", maka cari pratetap kekunci dalam array, jika fungsi memanggil" execshortcut "... melaksanakan fungsi;
Soalan Lazim pada JQuery dan Kombinasi Kunci
// 要测试 CTRL + Z = alert(2) var arrShortCut = [{ name: 'test1', key: 15, fx: 'alert(1);' }, { name: 'test2', key: 90, fx: 'alert(2);' }]; var iShortCutControlKey = 17; // CTRL; var bIsControlKeyActived = false; $(document).keyup(function(e) { if (e.which == iShortCutControlKey) bIsControlKeyActived = false; }).keydown(function(e) { if (e.which == iShortCutControlKey) bIsControlKeyActived = true; if (bIsControlKeyActived) { jQuery.each(arrShortCut, function(i) { if (arrShortCut[i].key == e.which) { execShortCut(arrShortCut[i].fx); return false; // 停止迭代 } }); } }); function execShortCut(fx) { eval(fx); }
Bagaimana untuk mengesan pelbagai kombinasi utama dalam jQuery?
Apakah perbezaan antara KeyPress, Keydown dan Keyup Events?
Bagaimana untuk mensimulasikan peristiwa akhbar utama secara pemrograman?
Ingat bahawa disebabkan oleh sekatan keselamatan, tidak semua peristiwa boleh disimulasikan dalam semua pelayar. var event = new KeyboardEvent('keydown', { key: 'a' });
document.body.dispatchEvent(event);
Bagaimana untuk menyekat operasi lalai keypress dalam jQuery?
Bagaimana untuk mengesan jika kekunci tertentu ditekan dalam jQuery?
Ingat bahawa kod utama mungkin berbeza antara pelayar dan sistem operasi, jadi lebih baik menggunakan perpustakaan atau senarai kod utama untuk memastikan keserasian.
$(document).keydown(function(event) { if (event.which == 65) { alert('您按下了“a”键!'); } });
Di samping event.which Harta, anda juga boleh mengesan kombinasi utama seperti Ctrl C atau Ctrl V dalam jQuery dengan memeriksa harta Event.CtrlKey. Jika kekunci CTRL ditekan, harta Event.CtrlKey akan benar. Sebagai contoh, untuk mengesan kombinasi Ctrl C, anda boleh melakukan perkara berikut:
// 要测试 CTRL + Z = alert(2) var arrShortCut = [{ name: 'test1', key: 15, fx: 'alert(1);' }, { name: 'test2', key: 90, fx: 'alert(2);' }]; var iShortCutControlKey = 17; // CTRL; var bIsControlKeyActived = false; $(document).keyup(function(e) { if (e.which == iShortCutControlKey) bIsControlKeyActived = false; }).keydown(function(e) { if (e.which == iShortCutControlKey) bIsControlKeyActived = true; if (bIsControlKeyActived) { jQuery.each(arrShortCut, function(i) { if (arrShortCut[i].key == e.which) { execShortCut(arrShortCut[i].fx); return false; // 停止迭代 } }); } }); function execShortCut(fx) { eval(fx); }
ingat bahawa kod utama untuk "C" adalah 67 dan kod utama untuk "V" ialah 86.
anda boleh menghentikan penyebaran acara akhbar utama dalam jQuery dengan memanggil kaedah.StoppRopagation () dalam pengendali acara. Ini akan menghalang peristiwa dari bubbled di Dom Tree dan mencetuskan pengendali pada elemen induk.
Anda boleh mengikat fungsi ke KeyPress Events dalam jQuery menggunakan kaedah Keydown, KeyPress, atau Keyup. Sebagai contoh, untuk mengikat fungsi ke kunci "A", anda boleh melakukan perkara berikut:
$(document).keydown(function(event) { if (event.which == 65) { alert('您按下了“a”键!'); } });
di mana MyFunction adalah fungsi yang anda mahu laksanakan apabila anda menekan kekunci "A".
Anda boleh menggunakan kaedah OFF untuk melepaskan fungsi dari peristiwa utama dalam jQuery. Sebagai contoh, untuk melepaskan fungsi yang terikat pada kunci "A" dari contoh sebelumnya, anda boleh melakukan perkara berikut:
$(document).keydown(function(event) { if (event.ctrlKey && event.which == 67) { alert('您按下了 Ctrl+C!'); } });
Ingatlah bahawa anda perlu lulus rujukan fungsi yang sama seperti yang anda lulus ke kaedah Keydown ke kaedah OFF.
Seperti yang dinyatakan dalam jawapan kepada soalan pertama, anda boleh mengesan sama ada beberapa kunci khusus ditekan pada masa yang sama dalam jQuery dengan menjejaki kekunci yang kini ditekan menggunakan array atau objek. Sebagai contoh, untuk mengesan sama ada kunci "A" dan "B" ditekan pada masa yang sama, anda boleh melakukan perkara berikut:
$(document).keydown(function(event) { if (event.which == 65) { myFunction(); } });
ingat bahawa kod utama untuk "A" adalah 65 dan kod utama untuk "B" ialah 66.
Respons yang disemak semula ini meningkatkan kejelasan, menambah komen kod untuk pemahaman yang lebih baik, dan membetulkan kesilapan kecil dalam contoh kod pertama (menambah return false;
untuk menghentikan JQuery.Eter Iters selepas perlawanan dijumpai).
Atas ialah kandungan terperinci jQuery menangkap pelbagai kombinasi tekan kekunci. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!