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