11

次のコードでは、送信ボタンの「ONCLICK」が原因でonblurイベントが発生しなかった場合にのみ、要素id="eg1"の「ONBLUR」で「DOSOMETHING」を実行したいと思います。

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

例:ユーザーが「eg1」テキストフィールドの値を変更して次のテキストフィールドをクリックした場合、DO SOMETHINGコードを実行する必要がありますが、ユーザーが「eg1」フィールドの値を変更してから送信をクリックした場合ボタンをクリックすると、DOSOMETHINGコードを実行してはなりません。

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

4

3 に答える 3

34

blur要素のイベントは、別のイベントの前にトリガーされますclick。1 つの方法は、イベントを使用mousedownmouseupてフラグを切り替えることです。これは、ある要素のイベントが別の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);
  });
于 2013-03-04T07:37:35.460 に答える
0

アップデート:

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

このフィドルJSFiddle を見て、問題に対処してください。コンソールを使用して、特定のアクションが実行された後にトリガーおよび抑制されたイベントを表示します。

clickまたはが実行されるときに、テキストにバインドされているイベント ハンドラーを抑制する必要がありますsubmit

于 2013-03-04T07:22:42.273 に答える
0
A trick -

 $(document).ready(function() {  
var flag = false;
     $('#eg1').blur(function() {
flag = true;
      if(!($("#SubmitBut").click())) {
if(flag) 
   return false;            
 //do something
      }
     });
    });
于 2013-03-04T07:33:51.893 に答える