Как сделать так, чтобы onFocus происходил один раз? - PullRequest
0 голосов
/ 15 сентября 2010

Как сделать так, чтобы это onFocus происходило всего 1 раз (не так, как сейчас, когда блокируются окна с диалогами)?

<html>
    <form name="myForm">
      <input type="button"
             value="Big Button"
             name="myButton"
             onFocus="alert('Focus event occured')">
    </form>
    </html>

Обновление:

извините, когда я говорю "один раз", я имею в виду один раз, когда он получает фокус. В настоящее время с одним фокусом он показывает бесконечные диалоги.

1 Ответ

1 голос
/ 15 сентября 2010

Это проблематично.Когда поле ввода получает фокус, событие фокуса запускается, вы обрабатываете это событие, устанавливая окно предупреждения , которое убирает фокус (событие «размытия») из поля ввода.Когда оповещение отклонено, поле ввода снова получает фокус , что приводит к срабатыванию фокуса в другой раз и ведет к бесконечной петле фокусировки усиления / потери / усиления.Вы получаете фокус еще несколько раз, потому что вы меняете фокус.

Вы не хотите сделать что-то в обработчике фокуса, который меняет фокус, как этот, если только он нестроки «когда этот элемент управления получает фокус, вместо этого отправьте фокус этому другому элементу управления».

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

Если вы опишите, чего вы на самом деле пытаетесь достичь, вы можете получить более качественный совет.Я полагаю, что предупреждение - это всего лишь проверка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...