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

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

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

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

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

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); }); 
 A trick - $(document).ready(function() { var flag = false; $('#eg1').blur(function() { flag = true; if(!($("#SubmitBut").click())) { if(flag) return false; //do something } }); }); 

更新:

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

看看这个小提琴JSFiddle来解决你的问题 。 使用控制台查看执行特定操作后触发和抑制的事件。

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