Запретить выполнение кода onblur при нажатии на кнопку Отправить
Следующим кодом я хочу "сделать что-то" на "ONBLUR" элемента id="eg1", только если событие onblur не было вызвано из-за "ONCLICK" на кнопке submit.
$(document).ready(function() {
$('#eg1').blur(function() {
if(!($("#SubmitBut").click())) {
//do something
}
});
});
Для примера: если пользователь изменяет значение текстового поля " eg1 "и нажимает на следующее текстовое поле, то код DO SOMETHING должен выполняться, но в случае, если пользователь изменяет значение поля" eg1 " и затем нажимает на кнопку SUBMIT, то код DO SOMETHING не должен выполняться.
Правильно ли это сделать? ?? Пожалуйста, проводник.
3 ответа:
blur
событие элемента срабатывает раньшеclick
события другого. Поэтому один из способов-использовать событияmousedown
иmouseup
для переключения флага, поскольку событиеmousedown
одного элемента срабатывает раньше событияblur
другого.$("#eg1").on("blur", function(e){ if($("#submit").data("mouseDown") != true){ alert("DO SOMETHING"); } }); $("#submit").on("mousedown", function(e){ $("#submit").data("mouseDown", true); }); $("#submit").on("mouseup", function(e){ $("#submit").data("mouseDown", false); });
A trick - $(document).ready(function() { var flag = false; $('#eg1').blur(function() { flag = true; if(!($("#SubmitBut").click())) { if(flag) return false; //do something } }); });
Обновление:
$('input[type="submit"]').mousedown(test);
Взгляните на эту скрипку JSFiddle, чтобы решить вашу проблему . Используйте консоль для просмотра событий, запускаемых и подавляемых после выполнения определенных действий.
Вы должны подавить обработчик событий, который привязан к тексту, когда выполняется
click
илиsubmit
.