如果单击提交按钮,则阻止执行onblur代码

时间:2013-03-04 07:12:11

标签: javascript jquery onclick onblur

通过以下代码,我希望在元素id =“eg1”的“ONBLUR”上“DO SOMETHING”,只要onblur事件不是由于提交按钮上的“ONCLICK”而引起的。

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

对于例如:如果用户更改“eg1”文本字段的值并单击下一个文本字段,则必须运行DO SOMETHING代码,但是如果用户更改“eg1”字段的值,然后单击在SUBMIT按钮上,DO SOMETHING代码不能运行。

这样做是否正确? 请指导。

3 个答案:

答案 0 :(得分:31)

blur元素事件在另一个事件的click事件之前触发。因此,一种方法是使用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);
  });

答案 1 :(得分:0)

<强>更新

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

看看这个小提琴JSFiddle to address your problem。使用控制台查看在执行特定操作后触发和抑制的事件。

在执行clicksubmit时,您应该禁止绑定到文本的事件处理程序。

答案 2 :(得分:0)

A trick -

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