Bagaimana cara memicu sesuatu saat kursor berada dalam TEXTAREA dan Ctrl+ Enterditekan? Menggunakan jQuery . Terima kasih
Jawaban:
Anda dapat menggunakan event.ctrlKeybendera untuk melihat apakah Ctrltombolnya ditekan, seperti ini:
$('#textareaId').keydown(function (e) {
if (e.ctrlKey && e.keyCode == 13) {
// Ctrl-Enter pressed
}
});
10, bukan 13.
keypressperistiwa, kode kunci akan menjadi 10, tetapi keydownatau keyupakan melaporkan 13. Hanya uji chrome
Sebenarnya yang ini melakukan trik dan berfungsi di semua browser:
if ((event.keyCode == 10 || event.keyCode == 13) && event.ctrlKey)
link ke js fiddle .
Catatan:
keyCode10, bukan 13 ( laporan bug ). Jadi kita perlu memeriksa keduanya.ctrlKeyada controldi Windows, Linux, dan macOS (bukan command). Lihat juga metaKey.ctrlKeysesuai dengan tombol Command di Mac?
if ((e.keyCode == 10 || e.keyCode == 13) && (e.ctrlKey || e.metaKey))
Solusi universal
Ini juga mendukung macOS: Ctrl+ Enterdan ⌘ Command+ Enterakan diterima.
if ((e.ctrlKey || e.metaKey) && (e.keyCode == 13 || e.keyCode == 10)) {
// do something
}
e.ctrlKeymendeteksi ⌃ Controldan e.metaKeymendeteksi ⌘ Command. Gunakan ini jika Anda ingin Ctrl-Enter dan Command-Enter memicu perilaku.
e.keyCodedari 10to berarti Enter dan 13? The MDN keyCodedokumentasi daftar hanya 13sebagai nilai yang mungkin untuk Masukkan, diuji di beberapa browser dan sistem operasi.
Saya menemukan jawaban orang lain tidak lengkap atau tidak kompatibel lintas-browser.
Kode ini berfungsi google chrome.
$(function ()
{
$(document).on("keydown", "#textareaId", function(e)
{
if ((e.keyCode == 10 || e.keyCode == 13) && e.ctrlKey)
{
alert('ctrl+enter');
}
});
});
Ini dapat diperluas ke plugin JQuery yang sederhana namun fleksibel seperti di:
$.fn.enterKey = function (fnc, mod) {
return this.each(function () {
$(this).keypress(function (ev) {
var keycode = (ev.keyCode ? ev.keyCode : ev.which);
if ((keycode == '13' || keycode == '10') && (!mod || ev[mod + 'Key'])) {
fnc.call(this, ev);
}
})
})
}
Jadi
$('textarea').enterKey(function() {$(this).closest('form').submit(); }, 'ctrl')
harus mengirimkan formulir ketika pengguna menekan ctrl-enter dengan fokus pada area teks formulir itu.
(Dengan terima kasih kepada https://stackoverflow.com/a/9964945/1017546 )
Mungkin agak terlambat ke permainan, tapi inilah yang saya gunakan. Ini juga akan memaksa pengiriman formulir yang merupakan target kursor saat ini.
$(document.body).keypress(function (e) {
var $el = $(e.target);
if (e.ctrlKey && e.keyCode == 10) {
$el.parents('form').submit();
} else if (e.ctrlKey && e.keyCode == 13) {
$el.parents('form').submit();
}
});
if... else if" menjadi satu if (e.ctrlKey && (e.keyCode == 10 || e.keyCode == 13)).