2013-03-04 20 views
8

次のコードで、onblurイベントが "ONCLICK"によって発生しなかった場合にのみ、要素id = "eg1"の "ONBLUR"送信ボタン。例:については送信ボタンでクリックしたときにオンブラコードが実行されないようにする

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

:ユーザーがテキストフィールドの横の「EG1」テキストフィールドとクリックの値を変更した後のDO SOMETHINGコードを実行する必要がありますが、場合には、ユーザーは「EG1」の値を変更した場合SUBMITボタンをクリックすると、DO SOMETHINGコードは実行されません。

これは正しい方法ですか? ご案内ください。

+2

このようにすることはできません。一度に2つのイベントをキャプチャできません。 –

+0

@Ravi:タスクを達成する正しい方法で私を助けてください。 –

+0

@PalakTaneja:私が作成したフィドルをご覧ください。質問を慎重に読んだ後、以前の回答を更新しました。 – D3V

答えて

27

blur要素のイベントは、clickイベントの前にトリガーします。したがって、mousedownmouseupのイベントを使用してフラグを切り替えることがあります。mousedownの1つの要素のイベントが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

@ダイオードはモバイルでもその仕事を教えてください?モバイル機能はタップまたはクリック機能なので、 –

0

更新:

$('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つのイベントをキャプチャします。 –

関連する問題