Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript return false不会停止其他函数的执行_Javascript_Jquery_Function_Validation_Return - Fatal编程技术网

JavaScript return false不会停止其他函数的执行

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

我有一些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="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">