2013-03-04 4 views
8

Следующим кодом я хочу «СОЗДАТЬ» на «ONBLUR» элемента id = «eg1», только если событие onblur не было вызвано из-за «ONCLICK» на отправить кнопку.Запретить выполнение кода onblur при нажатии на кнопку отправки

$(document).ready(function() { 
    $('#eg1').blur(function() { 
     if(!($("#SubmitBut").click())) { 
      //do something 
     } 
    }); 
    }); 

Для Например: если пользователь изменяет значение «Eg1» текстовое поле и нажимает на следующем текстовом поле, то DO НЕЧТО код должен работать, но в случае, когда пользователь изменяет значение из «EG1» и затем нажимает кнопку SUBMIT, тогда код DO SOMETHING не должен запускаться.

Правильно ли это сделать? Пожалуйста, руководство.

+2

Вы не можете сделать это. Вы не можете захватить два события за раз. –

+0

@Ravi: пожалуйста, помогите мне с правильным способом выполнить задачу. –

+0

@PalakTaneja: Пожалуйста, просмотрите скрипт, который я создал. Я обновил свой предыдущий ответ, внимательно прочитав вопрос. – D3V

ответ

27

blur событие элемента вызывает перед тем click события другого. Таким образом, один из способов - использовать и 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); 
    }); 
+0

Это сработало ... спасибо ... :) –

+1

Это сэкономило мне много времени, спасибо :-) – kuba

+0

@Diode сообщите, будет ли работать и в мобильном? так как мобильные функциональные возможности являются функциональными клавишами или щелчками. –

0

Update:

$('input[type="submit"]').mousedown(test);

Посмотрите на эту скрипку JSFiddle to address your problem. Используйте консоль для просмотра событий, инициированных и подавленных после выполнения определенных действий.

Вы должны подавить обработчик событий, привязанный к тексту, когда выполняется click или submit.

+0

Это не то, что я ищу ..., возможно, вы правильно поняли мою проблему ... Спасибо, что пытались. –

0
A trick - 

$(document).ready(function() { 
var flag = false; 
    $('#eg1').blur(function() { 
flag = true; 
     if(!($("#SubmitBut").click())) { 
if(flag) 
    return false;    
//do something 
     } 
    }); 
    }); 
+0

это делает то же самое, захватывает 2 события одновременно, что не разрешено. –