2008-09-17 4 views
1

У меня есть форма, как это:Как пропустить поля, используя javascript?

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

Когда пользователь вводит значение в «один», я иногда хочу, чтобы пропустить поле «два», в зависимости от того, что он набрал. Например, если пользователь вводит «123» и использует Tab для перехода к следующему полю, я хочу пропустить его и перейти в поле три.

Я попытался использовать OnBlur и OnEnter, без успеха.

Попробуйте 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> 

Попробуйте 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> 

, но ни одна из этих работ. Похоже, браузер не позволяет вам возиться с фокусом, пока фокус меняется.

Кстати, все это пробовали с Firefox на Linux.

ответ

3

Попытка присоединить TabIndex атрибут к вашим элементам, а затем programmaticaly (в JavaScript изменить его):

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

Вы можете использовать onfocus событие на поле два, который будет называться, когда он получает фокус. В этот момент значение поля 1 должно быть обновлено, и вы можете выполнить проверку.

1

Если вы использовали описанный вами метод, и они работали, фокус также изменился бы, когда пользователь нажимает на поле вместо того, чтобы табулировать на него. Я могу гарантировать, что это приведет к разочарованию пользователя. (Почему именно это не работает, вне меня.)

Вместо этого, как было сказано ранее, измените tabindex соответствующих полей, как только изменится содержимое поля.

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

Попробуйте onkeypress вместо onblur. Кроме того, на поле onfocus в поле два вы должны отправить три. Я предполагаю, что вы не хотите, чтобы они печатали по два, если 123, поэтому вы можете просто проверить это на двух onfocus и отправить по три.

Смежные вопросы