2013-03-04 18 views
8

Następującym kodem chcę "Zrobić CO" na "ONBLUR" elementu id = "eg1" tylko, jeśli zdarzenie onblur nie zostało spowodowane z powodu "ONCLICK" na przycisk przesyłania.Zapobieganie wykonywaniu kodu onblur po kliknięciu przycisku przesyłania

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

Np: jeśli użytkownik zmieni wartość „EG1” pola tekstowego i kliknięcia na polu tekstowym następnego wówczas NIE Kod coś musi uciekać, ale w przypadku, gdy użytkownik zmieni wartość The „EG1” pole, a następnie kliknie przycisk SUBMIT, a następnie nie można uruchomić kodu DO COŚ.

Czy to właściwy sposób? Proszę przewodnika.

+2

Nie możesz tego zrobić. Nie możesz uchwycić dwóch zdarzeń naraz. –

+0

@Ravi: pomóż mi we właściwy sposób wykonać zadanie –

+0

@PalakTaneja: Proszę zobaczyć utworzone przeze mnie skrzypce. Zaktualizowałem moją poprzednią odpowiedź po uważnym przeczytaniu tego pytania. – D3V

Odpowiedz

27

blur przypadku elementu powoduje przed click przypadku drugiego. Tak więc jednym ze sposobów jest użycie zdarzeń mousedown i mouseup do przełączania flagi, ponieważ zdarzenie mousedown wyzwala się przed zdarzeniem innego zdarzenia .

$("#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

Udało się ... dziękuję ... :) –

+1

Zaoszczędził mi to wiele czasu, dziękuję :-) – kuba

+0

@Diode proszę powiedzieć, czy to będzie działać również na urządzeniach mobilnych? jako funkcje mobilne są to funkcje dotykowe lub kliknięcia. –

0

Aktualizacja:

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

Wystarczy popatrzeć na to skrzypce JSFiddle to address your problem. Użyj konsoli, aby wyświetlić zdarzenia wyzwalane i pomijane po wykonaniu określonych czynności.

Powinieneś wyłączyć obsługę zdarzeń związaną z tekstem po wykonaniu click lub submit.

+0

To nie jest coś, czego szukam ..., prawdopodobnie dobrze zrozumiesz mój problem ... Dziękuję za próbę. –

0
A trick - 

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

robi to samo, przechwytuje 2 zdarzenia w tym samym czasie, co nie jest dozwolone. –

Powiązane problemy