5 개의 입력이 있는데 모두가 편지를 기다립니다. 편지가 가득 차면 자동으로 다음 입력으로 이동해야합니다.keydown 이후 강제 키 입력
문제는 내가 keyup
만 캡처하면 올바르게 점프하게되지만 "빨리"쓸 수 없다는 것입니다.
예컨대의 나는 단어 '메간'를 작성해야한다고 가정 해 봅시다, 그래서 나는 m
로 시작하지만 e
을 누르면 내가 해제하기 전에 (의 keyup)를 m
키를 누른 다음 내가 이상한 행동을 얻는다.
이
는 HTML<form>
<div class="code-cell"><input id="code-1" tabindex="1" class="code-input" type="text" data-isvalid="false" /></div>
<div class="code-cell"><input id="code-2" tabindex="2" class="code-input" type="text" maxlength="1" data-isvalid="false" /></div>
<div class="code-cell"><input id="code-3" tabindex="3" class="code-input" type="text" maxlength="1" data-isvalid="false" /></div>
<div class="code-cell"><input id="code-4" tabindex="4" class="code-input" type="text" maxlength="1" data-isvalid="false" /></div>
<div class="code-cell"><input id="code-5" tabindex="5" class="code-input" type="text" maxlength="1" data-isvalid="false" /></div>
</form>
keydown
에 이렇게
var goTo = function (curIndex, nextIndex, e) {
// Backwards
if ((curIndex > codeMinLength) && (nextIndex < curIndex)) {
if (nextIndex < 5 && $('#code-' + curIndex).val() === '') {
$('#code-' + nextIndex).focus();
}
$('#code-' + curIndex).val('');
}
// Foreward
if ((curIndex < codeMaxLength) && (nextIndex > curIndex)) {
if ($('#code-' + curIndex).val().trim().length > 0) {
// Force the keyup of the previous pressed key not yet released
$('#code-' + nextIndex).focus();
}
}
};
var eventToCapture = (window._PFN.isMobile) ? 'keyup' : 'keydown';
$('.code-input').on(eventToCapture, function (e) {
var $input = $(e.target);
var keyCode = e.keyCode || e.which;
curIndex = parseInt($input.attr('tabindex'));
nextIndex = null;
if(e.keyCode === 13) {
return validateCode();
}
if (keyCode === 8) { // Backspace
nextIndex = curIndex - 1;
} else {
nextIndex = curIndex + 1;
}
//$('.code-input').on('keyup', function(e){
goTo(curIndex, nextIndex, e);
//});
});
날 빨리 쓸 수합니다 (keydown
이벤트를 캡처) 자바 스크립트,하지만 내가 다음에 원활하게 이동하지 않습니다 입력.
keydown이 감지 될 때 강제로 키 입력을 할 수 있는지 궁금합니다.
배치주십시오 키 업 및 keydown 이벤트 코드. –