问题
动作 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()
时无限期地。
问题是,如果触发了loadingEnabled
,我可以在alert
函数中引入一些阻止执行的内容吗?
我可以想到解决方法。我只是想知道这种情况下是否有用。
答案 0 :(得分:0)
一些建议。
您可以从验证中返回一个布尔值,并以此为条件使loadingEnabled代码成为条件:
$( ".loadingEnabled" ).click(function( event ) {
if(validation()){
$(".loadingSpinner").css("display","block");
$(".myModalContent").hide();
$(".modal-header").html("<b>Processing your request</b>");
$(".modal-footer").hide();
}
});
然后(在验证功能中):
return true; // assuming that validation has passed
} else if ($("#name").val().length < 2){
event.preventDefault();
alert("You cannot proceed without entering your name")
return false;
}
或2。您可以颠倒流程,单击按钮时调用验证功能,命名其他功能,仅在验证通过后才调用
答案 1 :(得分:0)
我没有找到要考虑的解决方案,但是,我实施的解决方案涉及:
validated
到true
loadingEnabled
函数放置在validation
函数之后,以便系统首先执行validation
。validated
设置为false
validated
仅在true
为if statement
时执行loadingEnabled
。以上解决方案确保了validation
可以重复使用。