Проблема в том, что вызов alert
не фокусирует элемент, - это окно предупреждения, которое является новым фокусом.Таким образом, событие blur
снова запускается на input
, что приводит к повторному запуску всей функции прослушивателя - она продолжает срабатывать сама.
alert
в любом случае очень неприемлемо для пользователя.Исправьте это, удалив alert
:
$("div").on("blur kepress", 'input', function(evt){
console.log(evt.type);
if ( $(this).val().length > 8 ) {
$(this).focus();
} else {
console.log(2);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div class="parent">
<input type="text">
</div>
</body>