Frage

Ich habe eine Form wie folgt aus:

<form name="mine">
    <input type=text name=one>
    <input type=text name=two>
    <input type=text name=three>
</form>

Wenn Benutzer einen Wert in ‚Eins‘, möchte ich manchmal das Feld ‚zwei‘ überspringen, je nachdem, was er getippt. Wenn beispielsweise Benutzertypen ‚123‘ und Tab verwendet zum nächsten Feld zu bewegen, will ich es überspringen und gehen drei in das Feld ein.

Ich habe versucht OnBlur und OnEnter zu verwenden, ohne Erfolg.

Versuchen 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>

Versuchen 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>

aber keines dieser Werke. Sieht aus wie der Browser nicht, Sie zu verwirren mit Fokus erlauben, während der Fokus ändert.

BTW, all dies versucht mit Firefox unter Linux.

War es hilfreich?

Lösung

Versuchen tabindex-Attribut auf Ihre Elemente zu befestigen und dann programmatisch (in javaScript es aus):

<INPUT tabindex="3" type="submit" name="mySubmit">

Andere Tipps

könnten Sie verwenden das onfocus Ereignis auf dem Feld zwei, die aufgerufen wird, wenn es den Fokus erhält. An diesem Punkt sollte Feld 1 Wert aktualisiert werden und Sie können Ihre Prüfung dann durchführen.

Wenn Sie die Methode verwendet, die Sie beschreiben, und sie arbeiteten, würde der Fokus auch ändern, wenn der Benutzer auf dem Feld klickt, anstatt es von der Tabulatortaste. Ich kann Ihnen garantieren, dass diese in einem frustrierten Benutzer führen würden. (Warum genau es funktioniert nicht, ist mir.)

Stattdessen wie gesagt, ändern Sie die tabindex der entsprechenden Felder, sobald der Inhalt des Feldes eine Änderung.

<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>

Versuchen onkeypress statt onblur. Auch auf der onfocus des Feldes zwei ist, wo Sie drei entsenden sollten. Ich nehme an, Sie wollen nicht, sie in zwei eingeben, wenn man 123 so können Sie nur, dass onfocus die auf zwei überprüfen und auf drei senden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top