Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top