Come ignorare i campi di utilizzo di javascript?
-
09-06-2019 - |
Domanda
Ho un modulo come questo:
<form name="mine">
<input type=text name=one>
<input type=text name=two>
<input type=text name=three>
</form>
Quando l'utente digita un valore in 'uno', a volte mi vuole saltare il campo 'due', in base a quello che ha scritto.Per esempio, se l'utente tipi di '123' e utilizza Tab per passare al campo successivo, voglio saltare e andare al campo tre.
Ho provato ad usare OnBlur
e OnEnter
, senza successo.
Prova 1:
<form name="mine">
<input type=text name=one onBlur="if (document.mine.one.value='123') document.three.focus();>
<input type=text name=two>
<input type=text name=three>
</form>
Prova 2:
<form name="mine">
<input type=text name=one>
<input type=text name=two onEnter="if (document.mine.one.value='123') document.three.focus();>
<input type=text name=three>
</form>
ma nessuno di questi funziona.Sembra che il browser non consentono di pasticciare con il fuoco, mentre il fuoco sta cambiando.
BTW, tutto questo provato con Firefox su Linux.
Soluzione
Provare a collegare l'attributo tabindex per i tuoi elementi, e poi programmaticaly (in javaScript cambiare):
<INPUT tabindex="3" type="submit" name="mySubmit">
Altri suggerimenti
Si potrebbe utilizzare il onfocus evento sul campo due, che sarà chiamata quando si riceve lo stato attivo.A quel punto, il campo 1 il valore deve essere aggiornato e si può eseguire il controllo.
Se si è utilizzato il metodo da te descritto, e hanno lavorato, la messa a fuoco sarebbe cambiare anche quando l'utente fa clic sul campo, invece di tabulazione per esso.Ti posso garantire che il risultato sarebbe un frustrato utente.(Perché proprio non funziona è di là di me.)
Invece, come detto prima, è possibile modificare la proprietà tabindex di appositi campi non appena il contenuto del campo cambia.
<form name="mine">
<input type="text" name="one" onkeypress="if (mine.one.value == '123') mine.three.focus();" />
<input type="text" name="two">
<input type="text" name="three">
</form>
Provare onkeypress
invece di onblur
.Inoltre, sul onfocus
di campo è dove si dovrebbe essere l'invio di tre.Sto assumendo che non si desidera digitare in due, se uno è 123, in modo che si può solo controllare che su due onfocus
e inviare a tre.