#javascript #jquery #input #alert
Вопрос:
<input type='text' class='binp'>
$('.binp').on('input', function(){
alert('lorem');
});
поэтому я что-то набираю .binp
и перехожу на другую страницу
, а затем возвращаюсь, используя кнопку браузера Go Back
(история) .
и lorem
появляется предупреждение
, и я должен нажать на его OK
кнопку несколько раз, чтобы закрыть предупреждение
как этого избежать?
Мне нужно предупреждение только в том случае, если я наберу, удалю или вставлю что-то во ввод, а не после возвращения на страницу
Комментарии:
1. используйте
'change'
событие не'input'
Ответ №1:
Примерь размытие.
$('.binp').on('keyup', function() {...});
Комментарии:
1. в данном случае Shift, Ctrl, Esc… также вызовет событие
2. Попробуйте использовать sessionStorage, чтобы проверить, возвращается ли он из истории внутри прослушивателя событий «вход».
Ответ №2:
Вы не показали весь код, но я предполагаю, что вы потеряли регистрацию на мероприятие. Просто поместите его в раздел «Готовый обработчик событий».
Упрек:
(1) ввод (2) нажмите ссылку (3) нажмите курсором где-нибудь в открывшейся ссылке, чтобы сфокусировать ее (4) Используйте Alt ⬅
, чтобы вернуться (или другой ярлык).
// bad
$('.binp').on('input', function(){
alert('lorem');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="https://stackoverflow.com">link</a>
<input type='text' class='binp'>
Решение:
$( document ).ready(function() {
// good
$('.binp').on('input', function(){
alert('lorem');
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="https://stackoverflow.com">link</a>
<input type='text' class='binp'>
Комментарии:
1. до тех пор, пока JavaScript находится в конце страницы, как и должно быть, и элемент выходит, нет необходимости его оборачивать.