3

ページの「保存」ボタンをクリックすると実行される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">

私が興味を持っている関数は minMaxValues() です。このテストが失敗した場合、フォームは送信されません (この場合、他の関数は実行されないことを意味します)。 return false; を使用しました。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

これが false を返す場合、それ以上の関数の実行を許可しない方法はありますか?

4

4 に答える 4

3
"btnSubmit" onClick="noSpaceTest();minMaxValues()?:return;compare2dates(benefit_start_date, benefit_end_date,'javascript:saveNewBenefit()')" width="60" height="22" border="0" class="btnimg">

また

"btnSubmit" onClick="noSpaceTest();if(!minMaxValues()){return};compare2dates(benefit_start_date, benefit_end_date,'javascript:saveNewBenefit()')" width="60" height="22" border="0" class="btnimg">

送信を停止するだけでなく、他の機能の実行を停止する必要があります

編集:実際にはすべてをよりクリーンなクリックハンドラー関数に入れる必要があります。これは簡単な修正です

于 2013-06-20T19:11:53.883 に答える
3

ロジックをカプセル化する関数を作成できます。

function clickHandler()
{
     noSpaceTest();
     var minMax = minMaxValues();
     if(minMax)
     {
         compare2dates(benefit_start_date, benefit_end_date,'javascript:saveNewBenefit()')
     }
}

それから

<img src="images/btn/save.gif" name="btnSubmit" onClick="clickHandler();" width="60" height="22" border="0" class="btnimg">
于 2013-06-20T19:14:49.513 に答える
2

false を返す代わりに、単に return を試してください。return false は評価される値を返しますが、 return は関数を終了するだけです。編集: return の代わりにコールバック関数を試してみてください。

于 2013-06-20T19:19:16.767 に答える