Pergunta

Eu tenho um formulário assim:

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

Quando o usuário digita um valor em 'um', às vezes quero pular o campo 'dois', dependendo do que ele digitou.Por exemplo, se o usuário digitar '123' e usar Tab para passar para o próximo campo, quero ignorá-lo e ir para o campo três.

Eu tentei usar OnBlur e OnEnter, sem sucesso.

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

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

mas nada disso funciona.Parece que o navegador não permite que você mexa no foco enquanto ele está mudando.

Aliás, tudo isso foi tentado com o Firefox no Linux.

Foi útil?

Solução

Tente anexar o atributo tabindex aos seus elementos e depois programaticamente (em javaScript altere-o):

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

Outras dicas

Você poderia usar o No foco evento no campo dois, que será chamado quando receber foco.Nesse ponto, o valor do campo 1 deve ser atualizado e você poderá realizar sua verificação.

Se você usasse o método descrito e eles funcionassem, o foco também mudaria quando o usuário clicasse no campo, em vez de navegar até ele.Posso garantir que isso resultaria em um usuário frustrado.(Por que exatamente isso não funciona está além da minha compreensão.)

Em vez disso, como dito antes, altere o índice de tabulação dos campos apropriados assim que o conteúdo do campo um for alterado.

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

Tentar onkeypress em vez de onblur.Também, no onfocus do campo dois é para onde você deve enviar para o três.Presumo que você não queira que eles digitem dois se um for 123, então você pode verificar isso em dois onfocus e envie para três.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top