Если я правильно понимаю, у вас есть функция validate()
(которую вы не показываете), которая проверяет указанный элемент и возвращает true
, если все в порядке, или false
, если недействительно.При отправке вы хотите позвонить validate()
для нескольких товаров, и если любой из них , то верните false
, верните false
отправителю (наоборот, верните true
, только если все проверки true
.
То, как ваш существующий код устанавливает retVal
, когда он становится true
, он будет оставаться true
, потому что любой логический результат из validate()
ИЛИ с true
будет true
. Попробуйте вместо этого:
$("input:submit").click(function(){
var retVal = true;
$.each([1, 2], function(i, val){
retVal = validate(val) && retVal;
});
return retVal;
});
Это начинается с возврата по умолчанию true
, а затем изменяется на false
, если validate(val)
возвращает false
. Использование &&
вместо ||
означает, что если retVal
равно false
, оно останется false
. На мой взгляд, было бы яснее просто избавиться от &&
и сказать:
if (!validate(val)) retVal = false;