Запретить выполнение кода 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 9

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.