Как предотвратить распространение событий в javascript? - PullRequest
0 голосов
/ 11 октября 2011
<script type="text/javascript">
function f1(a)
{
alert(a);
document.forms[0].elements[0].focus();
}
function f2(b)
{
alert(b);
document.forms[0].elements[1].focus();
}
</script>
<form name="myform">
<input type="text" name="box1" value="a" onblur=f1('a');  />
<input type="text" name="box2" value="b" onblur=f2('b');  />
</form>

Событие onblur запускается каждый раз и повторяется бесконечно. Tried e.stopPropagation () остается прежним. Моя цель состоит в том, чтобы проверять текстовые поля, когда пользователь переходит к следующему элементу формы. Поэтому это заставило меня вызвать функцию в onblur ()

Ответы [ 2 ]

1 голос
/ 11 октября 2011

Когда открывается всплывающее окно с предупреждением, и вам приходится щелкать по нему, вызывается поле, в котором вы снова оказались на размытии, что, в свою очередь, вызывает другой вызов одной из ваших функций (f1 или f2) и другое всплывающее окно с предупреждениемпоявляется.Таким образом, это бесконечный цикл.StopPropagation здесь вам не поможет.Предложение: не используйте alert().

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

0 голосов
/ 11 октября 2011

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

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