【问题标题】:Prevent onblur code to execute if clicked on submit button如果单击提交按钮,则阻止执行 onblur 代码
【发布时间】:2013-02-18 05:36:43
【问题描述】:

通过以下代码,我希望仅当 onblur 事件不是由于提交按钮上的“ONCLICK”而引起时才对元素 id="eg1" 的“ONBLUR”进行“做某事”。

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

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

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

【问题讨论】:

  • 你不能这样做。您不能一次捕获两个事件。
  • @Ravi : 请帮助我完成任务的正确方法
  • @PalakTaneja:请查看我创建的小提琴。仔细阅读问题后,我已经更新了我之前的答案。

标签: javascript jquery onclick onblur


【解决方案1】:

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);
  });

【讨论】:

  • @Diode 请告诉它在移动设备上也能用吗?因为移动功能就是点击或点击功能。
  • 你在使用 jQuery mobile 吗?
【解决方案2】:
A trick -

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

【讨论】:

  • 这做同样的事情,同时捕获 2 个事件,这是不允许的。
【解决方案3】:

更新:

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

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

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

【讨论】:

  • 这不是我要找的东西...,可能您没有正确解决我的问题...谢谢您的尝试。
猜你喜欢
  • 1970-01-01
  • 2018-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多