Всплывающее окно запускается несколько раз с коротким интервалом времени - PullRequest
0 голосов
/ 28 января 2020

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

Как я могу это решить? Есть ли способ убедиться, что всплывающее окно не отображается снова в течение пары секунд?

Соответствующий код:

$(':input').bind('keypress keydown keyup change',function(){
  var weight = parseFloat(String($(':input[name='.concat(n,']')).val()).replace(',', '.'));

  if (weight > 100 || weight < 0){
      window.alert("Bitte eine Nummer zwischen 0 und 100 eingeben!");
  }

});

1 Ответ

1 голос
/ 28 января 2020

Вы связываете 4 события, чтобы сделать то же самое, поэтому вы должны получить 4 оповещения:

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

  • нажатие клавиши (устарело) срабатывает при нажатии клавиши, выдающей символьное значение
  • keydown срабатывает при нажатии клавиши.
  • keyup срабатывает при отпускании клавиши.
  • change срабатывает когда значение зафиксировано пользователем.

Вы забыли завершить input -event ...

Используйте событие change, чтобы только запустить Ваш код, когда значение фиксируется пользователем.

...