JavaScript return false не останавливает выполнение других функций



У меня есть несколько функций 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?

695   4  

4 ответов:

"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">

Должен остановить submit, а также остановить выполнение других функций

edit: вы действительно должны поместить все это в более чистую функцию обработчика кликов, это просто быстрое исправление

Вы можете написать функцию, которая инкапсулирует вашу логику:

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">
<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">

Это сработает.Я надеюсь, что это то, что вы ищете.

Вместо return false, просто попробуйте return. Return false по-прежнему возвращает значение, подлежащее вычислению, в то время как return просто завершает работу функции. Edit: может быть, попробовать функцию обратного вызова вместо return.

Comments

    Ничего не найдено.