İmleç TEXTAREA içindeyken ve Ctrl+ Entertuşuna basıldığında bir şeyi nasıl tetiklerim ? JQuery kullanarak . Teşekkürler
Yanıtlar:
event.ctrlKeyBayrağı 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 .
10değil 13.
keypressolayı olduğunda , keydownkeyup
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.ctrlKeyolan controlWindows, Linux ve MacOS (değil üzerinde command). Ayrıca bakınız metaKey.ctrlKeyMac'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.ctrlKeyalgılar ⌃ Controlve e.metaKeyalgılar ⌘ Command. Davranışı tetiklemek için hem Ctrl-Enter hem de Command-Enter istiyorsanız bunu kullanın.
e.keyCodearasında 10ek olarak girin demek 13? MDN keyCodebelgeleri yalnızca listeleri 13girin 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)).