İmleç TEXTAREA içindeyken ve Ctrl+ Entertuşuna basıldığında bir şeyi nasıl tetiklerim ? JQuery kullanarak . Teşekkürler
Yanıtlar:
event.ctrlKey
Bayrağı Ctrltuşa basılıp basılmadığını görmek için kullanabilirsiniz, bunun gibi bir şey:
$('#textareaId').keydown(function (e) {
if (e.ctrlKey && e.keyCode == 13) {
// Ctrl-Enter pressed
}
});
Yukarıdaki parçacığı buradan kontrol edin .
10
değil 13
.
keypress
olayı olduğunda , keydown
keyup
Aslında bu, hile yapıyor ve tüm tarayıcılarda çalışıyor:
if ((event.keyCode == 10 || event.keyCode == 13) && event.ctrlKey)
js fiddle'a bağlantı .
Notlar:
keyCode
( hata raporu ). Yani ikisini de kontrol etmeliyiz.ctrlKey
olan controlWindows, Linux ve MacOS (değil üzerinde command). Ayrıca bakınız metaKey
.ctrlKey
Mac'lerdeki Komut tuşuna karşılık geliyor mu?
if ((e.keyCode == 10 || e.keyCode == 13) && (e.ctrlKey || e.metaKey))
Evrensel çözüm
Sıra bu destekler MacOS: Her iki Ctrl+ Enterve ⌘ Command+ Enterkabul edilecektir.
if ((e.ctrlKey || e.metaKey) && (e.keyCode == 13 || e.keyCode == 10)) {
// do something
}
e.ctrlKey
algılar ⌃ Control
ve e.metaKey
algılar ⌘ Command
. Davranışı tetiklemek için hem Ctrl-Enter hem de Command-Enter istiyorsanız bunu kullanın.
e.keyCode
arasında 10
ek olarak girin demek 13
? MDN keyCode
belgeleri yalnızca listeleri 13
girin için olası bir değer olarak, birden fazla tarayıcı ve işletim sistemleri arasında test etti.
Başkalarının yanıtlarını eksik veya tarayıcılar arası uyumlu bulmuyorum.
Bu kod, google chrome'da çalışır.
$(function ()
{
$(document).on("keydown", "#textareaId", function(e)
{
if ((e.keyCode == 10 || e.keyCode == 13) && e.ctrlKey)
{
alert('ctrl+enter');
}
});
});
Bu, aşağıdaki gibi basit ama esnek bir JQuery eklentisine genişletilebilir:
$.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);
}
})
})
}
Böylece
$('textarea').enterKey(function() {$(this).closest('form').submit(); }, 'ctrl')
Kullanıcı o formun metin alanına odaklanarak ctrl-enter tuşlarına bastığında bir form göndermelidir.
( Https://stackoverflow.com/a/9964945/1017546 sayesinde )
Belki oyuna biraz geç kaldım ama kullandığım şey şu. Ayrıca, imlecin mevcut hedefi olan formun gönderilmesini de zorlayacaktır.
$(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
" yi basitleştirebilirsiniz if (e.ctrlKey && (e.keyCode == 10 || e.keyCode == 13))
.