JavaScript return false不会停止其他函数的执行
我有一些JS函数,在点击页面上的“保存”按钮时运行。按钮如下所示:JavaScript return false不会停止其他函数的执行,javascript,jquery,function,validation,return,Javascript,Jquery,Function,Validation,Return,我有一些JS函数,在点击页面上的“保存”按钮时运行。按钮如下所示: <img src="images/btn/save.gif" name="btnSubmit" onClick="noSpaceTest();minMaxValues();compare2dates(benefit_start_date, benefit_end_date,'javascript:saveNewBenefit()')" width="60" height="22" border="0" class="btn
<img src="images/btn/save.gif" name="btnSubmit" onClick="noSpaceTest();minMaxValues();compare2dates(benefit_start_date, benefit_end_date,'javascript:saveNewBenefit()')" width="60" height="22" border="0" class="btnimg">
<img src="images/btn/save.gif" name="btnSubmit" onClick="clickHandler();" width="60" height="22" border="0" class="btnimg">
我感兴趣的函数是minMaxValues()。如果此测试失败,则表单不应提交(在本例中,这意味着不应运行任何其他函数);在minMaxValues()函数中,它运行(警告错误值),但在解除警报后,将调用其他函数,而不是停止
以下是函数:
//Function to validate if maximum benefit value is more the minimum benefit value
function minMaxValues(){
var maxAmt = ($('#maxAmount').val());
var minAmt = ($('#minAmount').val());
if ((minAmt != '') && (maxAmt != '')){
try{
maxAmt = parseInt(maxAmt);
minAmt = parseInt(minAmt);
if(maxAmt < minAmt) {
alert('The maximum benefit amount must be larger than the minimum amount.');
return false;
}
}catch(e){
return false;
}
}//end maxAmt minAmt comparison
return true;
}//end minMaxValues function
//用于验证最大效益值是否大于最小效益值的函数
函数minMaxValues(){
var maxant=($('#maxant').val());
var minAmt=($('#minAmount').val());
如果((minAmt!=“”)和(&(maxAmt!=“”)){
试一试{
maxant=parseInt(maxant);
minAmt=parseInt(minAmt);
如果(最大金额<最小金额){
警报(“最高福利金额必须大于最低金额”);
返回false;
}
}捕获(e){
返回false;
}
}//结束最大最小值比较
返回true;
}//结束minMaxValues函数
如果此函数返回false,是否有方法不允许执行任何其他函数
"btnSubmit" onClick="noSpaceTest();minMaxValues()?:return;compare2dates(benefit_start_date, benefit_end_date,'javascript:saveNewBenefit()')" width="60" height="22" border="0" class="btnimg">
或
应该停止提交以及停止其他函数的执行
编辑:你真的应该把它全部放在一个更干净的点击处理函数中,这只是一个快速修复你可以编写一个封装逻辑的函数:
function clickHandler()
{
noSpaceTest();
var minMax = minMaxValues();
if(minMax)
{
compare2dates(benefit_start_date, benefit_end_date,'javascript:saveNewBenefit()')
}
}
然后
函数chuma()
{
noSpaceTest();
if(minMaxValues())
比较2个日期(福利开始日期、福利结束日期、'javascript:saveNewBenefit()');
}
这将起作用。我希望这就是您要查找的内容。请尝试返回,而不是返回false。Return false仍然返回要计算的值,而Return只是退出函数。编辑:可能尝试回调函数而不是返回。注意,如果onclick中没有一个完整的异常脚本,这不会是一个问题。:)如果您调用了一个失败时返回false的函数,那么一切都会正常工作——而且可读性更高。@cHao我完全同意您的看法。我使用的是可以追溯到很久以前的遗留代码,并且是一个团队,所以我在我能做/不能做的事情上受到严重限制。哈哈,没问题,你能确认我现在在那里的代码工作正常吗?在我第一次编辑之后,我确实编辑了几次posted@dihakz最好将逻辑封装在函数中,并在单击按钮时调用此函数。看看Maciej的答案。它更干净了。@stackErr是对的,如果您的onclick调用一个function@Stephan你希望我把答案“奖励”给谁?在我的例子中,这是首选的解决方案(更快、更容易的bug修复),尽管另一个更像是“最佳实践”@Stephan我忘了评论:是的,它正在按现在编写的方式工作。然而,它最初的编写方式(如下)工作得更好,因为它仍然会抛出警报(我正在使用的也是如此。)
if(!minMaxValues()){return}代码>这无疑是最“正确”和更干净的解决方案。不幸的是,脚本是外部的,我不能在那里修改它,只能在执行时修改。这肯定是我需要进一步探讨的问题。谢谢你的推荐。
<img src="images/btn/save.gif" name="btnSubmit" onClick="clickHandler();" width="60" height="22" border="0" class="btnimg">
<script>
function chuma()
{
noSpaceTest();
if(minMaxValues())
compare2dates(benefit_start_date, benefit_end_date,'javascript:saveNewBenefit()');
}
</script>
<img src="images/btn/save.gif" name="btnSubmit" onClick="chuma();" width="60" height="22" border="0" class="btnimg">