J'ai 5 entrées, chacun attendra une lettre. Une fois qu'une lettre est remplie, je dois passer automatiquement à l'entrée suivante.Forcer le clavier après le clavier
Le problème est que, si je capture seulement keyup
cela me fait sauter correctement, mais ne me laisse pas écrire "rapidement".
Disons que par exemple je dois écrire le mot « megan », donc je commence avec m
mais si je presse e
avant RELEASE (keyup) la clé m
, puis-je obtenir un comportement bizarre.
C'est le 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>
Le javascript (capture de l'événement 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);
//});
});
Faire cela en keydown
me permettent d'écrire rapidement, mais ne me laisse pas sauter en douceur à l'autre contribution.
Je me demandais si je pouvais forcer n'importe quel keyup quand un keydown est détecté.
S'il vous plaît placer votre keyup et le code d'événement de keydown aussi. –