jQuery를 사용하여 키 누르기 이벤트를 트리거하는 결정적인 방법
이 질문에 대한 답을 모두 읽었지만, 어떤 해결책도 효과가 없는 것 같습니다.
또, 특수 문자에 의한 키 누르기는 전혀 기능하지 않는 것 같은 느낌이 듭니다.누가 이런 짓을 했는지 확인할 수 있는 사람?
키 누르기 또는 키 누르기 이벤트를 트리거하려면 다음 작업만 수행하면 됩니다.
var e = jQuery.Event("keydown");
e.which = 50; // # Some key code value
$("input").trigger(e);
var e = jQuery.Event( 'keydown', { which: $.ui.keyCode.ENTER } );
$('input').trigger(e);
(jQuery UI를 사용하지 않는 경우 대신 적절한 키코드를 입력합니다.)
실제 답은 keyCode를 포함해야 합니다.
var e = jQuery.Event("keydown");
e.which = 50; // # Some key code value
e.keyCode = 50
$("input").trigger(e);
jQuery의 웹사이트에는 어떤 코드와 keyCode가 정규화 되어 있는지 나와 있지만, 매우 큰 오해가 있습니다.e.which와 e.keyCode를 표준 크로스브라우저 체크하는 것이 항상 가장 안전하며, 이 경우 둘 다 정의하기만 하면 됩니다.
jQuery UI도 사용하는 경우 다음과 같이 할 수 있습니다.
var e = jQuery.Event("keypress");
e.keyCode = $.ui.keyCode.ENTER;
$("input").trigger(e);
키업으로 작동시켰어요
$("#id input").trigger('keyup');
좋아, 이걸로 작업하는 사람은...
var e2key = function(e) {
if (!e) return '';
var event2key = {
'96':'0', '97':'1', '98':'2', '99':'3', '100':'4', '101':'5', '102':'6', '103':'7', '104':'8', '105':'9', // Chiffres clavier num
'48':'m0', '49':'m1', '50':'m2', '51':'m3', '52':'m4', '53':'m5', '54':'m6', '55':'m7', '56':'m8', '57':'m9', // Chiffres caracteres speciaux
'65':'a', '66':'b', '67':'c', '68':'d', '69':'e', '70':'f', '71':'g', '72':'h', '73':'i', '74':'j', '75':'k', '76':'l', '77':'m', '78':'n', '79':'o', '80':'p', '81':'q', '82':'r', '83':'s', '84':'t', '85':'u', '86':'v', '87':'w', '88':'x', '89':'y', '90':'z', // Alphabet
'37':'left', '39':'right', '38':'up', '40':'down', '13':'enter', '27':'esc', '32':'space', '107':'+', '109':'-', '33':'pageUp', '34':'pageDown' // KEYCODES
};
return event2key[(e.which || e.keyCode)];
};
var page5Key = function(e, customKey) {
if (e) e.preventDefault();
switch(e2key(customKey || e)) {
case 'left': /*...*/ break;
case 'right': /*...*/ break;
}
};
$(document).bind('keyup', page5Key);
$(document).trigger('keyup', [{preventDefault:function(){},keyCode:37}]);
한 줄에 걸쳐서 하고 싶은 경우
$("input").trigger(jQuery.Event('keydown', { which: '1'.charCodeAt(0) }));
현재 커서와 텍스트 선택을 고려해야 하는 경우...
이건 앵귤러에게 통하지 않았어크롬의 JS 앱원본 코멘트에서 Nadia가 지적했듯이 입력 필드에는 문자가 표시되지 않습니다(적어도 그것은 제 경험입니다).또한 이전 솔루션에서는 입력 필드의 현재 텍스트 선택을 고려하지 않습니다.나는 훌륭한 도서관 소장품을 사용해야만 했다.
여러 입력 필드를 입력하는 커스텀 숫자 키패드가 화면에 있습니다.어쩔 수 없이...
- 포커스에 lastFocus.element를 저장합니다.
흐리게 하면 현재 선택한 텍스트를 저장합니다(시작 및 중지).
var pos = element.selection('getPos') lastFocus.pos = { start: pos.start, end: pos.end}
키패드의 버튼을 눌렀을 클릭합니다.
lastFocus.element.selection( 'setPos', lastFocus.pos) lastFocus.element.selection( 'replace', {text: myKeyPadChar, caret: 'end'})
console.log( String.fromCharCode(event.charCode) );
캐릭터를 맵할 필요는 없다고 생각합니다.
이 문서와 같이 수행할 수 있습니다.
$('input').trigger("keydown", {which: 50});
언급URL : https://stackoverflow.com/questions/832059/definitive-way-to-trigger-keypress-events-with-jquery
'source' 카테고리의 다른 글
v-model을 사용한 Vuex 입력이 반응하지 않음 (0) | 2023.01.22 |
---|---|
자바에서의 부울에 대한 비트 연산자의 영향 (0) | 2023.01.22 |
Larabel에서 특수 문자를 사용하는 필터에 SQL REGEXP(mariadb)를 사용합니다. (0) | 2023.01.22 |
파일에 여러 행을 쓰려면 문자열에 새 행을 지정하려면 어떻게 해야 합니까? (0) | 2023.01.22 |
mysql은 내부 또는 외부 명령어, 프로그램 또는 배치로 인식되지 않습니다. (0) | 2023.01.22 |