Как пропустить поля с помощью JavaScript? - PullRequest
1 голос
/ 17 сентября 2008

У меня есть такая форма:

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

Когда пользователь вводит значение в 'one', я иногда хочу пропустить поле 'two', в зависимости от того, что он напечатал. Например, если пользователь вводит «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.

Ответы [ 5 ]

3 голосов
/ 17 сентября 2008

Попробуйте прикрепить атрибут tabindex к вашим элементам, а затем программно (в javaScript измените его):

<INPUT tabindex="3" type="submit" name="mySubmit">
1 голос
/ 17 сентября 2008

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

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

1 голос
/ 17 сентября 2008

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

0 голосов
/ 17 сентября 2008

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

0 голосов
/ 17 сентября 2008
<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...