11

通过下面的代码,我希望只有在 onblur 事件不是由于提交按钮上的“ONCLICK”引起的情况下才在元素 id="eg1" 的“ONBLUR”上“做某事”。

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

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

这是正确的方法吗?请指导。

4

3 回答 3

34

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);
  });
于 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 回答