首页 > 解决方案 > 如果警报同时从不同的功能触发,则阻止执行功能

问题描述

问题

动作A同时触发函数B和函数C(?!)。如果B抛出警报,我可以通过使用某种通用侦听器函数来阻止C执行吗?

我寻求的解决方案不涉及向函数C添加特定的侦听器,它必须保持通用。


我的例子

我在下面有以下代码,当按下模式中的按钮时会触发该代码。这将删除内容,直到处理 GET 方法并将用户返回到重定向页面。

$( ".loadingEnabled" ).click(function( event ) {
    $(".loadingSpinner").css("display","block");
    $(".myModalContent").hide();
    $(".modal-header").html("<b>Processing your request</b>");
    $(".modal-footer").hide();
});

在模态中,我只有几个简单的验证脚本,例如:

    } else if ($("#name").val().length < 2){
      event.preventDefault();
      alert("You cannot proceed without entering your name")
  }

因此,在当前设置下,用户将触发loadingEnabled点击功能,但是,如果数据无效,loadingEnabled则会触发hide()css()无限期地submit消失并被preventDefault()触发。

问题是,如果触发了 an ,我可以在函数中引入一些loadingEnabled阻止它执行的东西吗?alert

我可以想到解决方法。我只是想知道这种情况是否有任何问题。

标签: javascriptjquery

解决方案


我没有找到我想到的解决方案,但是,我实施的解决方案涉及:

  1. validated实例化一个新的全局变量true
  2. 定位loadingEnabled功能一个接着一个validation功能,以便系统首先执行validation
  3. 在每个失败的验证中添加一行以设置validatedfalse如果输入无效并且如果所有验证通过设置validatedtrue
  4. 将条件设置if statement 为仅loadingEnabledvalidationis时执行true

上述解决方案保证了loadingEnabled可以重复使用。


推荐阅读