커서가 TEXTAREA 내에 있고 Ctrl+ Enter를 누르면 어떻게 트리거 합니까? jQuery 사용 . 감사
답변:
다음과 같이 event.ctrlKey
플래그를 사용하여 Ctrl키가 눌 렸는지 확인할 수 있습니다 .
$('#textareaId').keydown(function (e) {
if (e.ctrlKey && e.keyCode == 13) {
// Ctrl-Enter pressed
}
});
10
,하지 13
.
keypress
이벤트 를 트리거 할 때 키 코드는 10이지만 13을보고 keydown
하거나 keyup
보고합니다. 크롬 만 테스트
ctrlKey
Mac의 Command 키에 해당합니까?
if ((e.keyCode == 10 || e.keyCode == 13) && (e.ctrlKey || e.metaKey))
범용 솔루션
이것은 macOS도 지원합니다 : Ctrl+ Enter와 ⌘ Command+ Enter가 모두 허용됩니다.
if ((e.ctrlKey || e.metaKey) && (e.keyCode == 13 || e.keyCode == 10)) {
// do something
}
e.ctrlKey
검출 ⌃ Control
하고 e.metaKey
검출 ⌘ Command
. Ctrl-Enter와 Command-Enter가 모두 동작을 트리거하도록하려면 이것을 사용하십시오.
e.keyCode
가 10
Enter를 의미 하는 이유를 설명 할 수 있습니까 13
? MDN의 keyCode
문서 목록에만 13
입력에 대한 가능한 값으로, 여러 브라우저와 운영 시스템에서 테스트했습니다.
다른 사람의 답변이 불완전하거나 브라우저 간 호환되지 않는 것을 발견했습니다.
이 코드는 Google 크롬에서 작동합니다.
$(function ()
{
$(document).on("keydown", "#textareaId", function(e)
{
if ((e.keyCode == 10 || e.keyCode == 13) && e.ctrlKey)
{
alert('ctrl+enter');
}
});
});
다음과 같이 간단하지만 유연한 JQuery 플러그인으로 확장 할 수 있습니다.
$.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);
}
})
})
}
그러므로
$('textarea').enterKey(function() {$(this).closest('form').submit(); }, 'ctrl')
사용자가 해당 양식의 텍스트 영역에 초점을두고 Ctrl-Enter를 누르면 양식을 제출해야합니다.
게임에 조금 늦었을 수도 있지만 여기에 내가 사용하는 것이 있습니다. 또한 커서의 현재 대상인 양식을 강제로 제출합니다.
$(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
"을 단일 if (e.ctrlKey && (e.keyCode == 10 || e.keyCode == 13))
.