У меня есть такой код:
function allValid() {
$('input').each(function(index) {
if(something) {
return false;
}
});
return true;
}
который всегда возвращает true как return false;
влияет на анонимную внутреннюю функцию. Существует ли простой способ назвать возврат внешней функции?
PS. Я не ищу обходное решение, просто хочу знать ответ на исходный вопрос. Если ответ "не возможен", он прекрасен.
Да, сохранить его в локальной переменной.
function allValid() {
var allGood = true;
$('input').each(function (index) {
if (something) {
allGood = false;
}
});
return allGood;
}
Вы также можете сделать это с помощью фильтра :
var anyInvalid = $('input').filter(function(index) {
if(inValidCheck)
return true;
}).length;
Это работает, потому что 0 рассматривается как ложь, но фактически дает вам количество недопустимых, которое вы можете использовать для отображения «У вас 3 недопустимые записи» или чего-то еще, если хотите.
Если вы хотите сделать это эффективно, я думаю, это лучший способ:
function allValid() {
elements = $('input')
for (i = 0; i < elements.length; i++) { invalidityCheck(elements[i]) && return false; }
return true;
}
Изменить: Хотя более версия JavaScript-y могла бы вероятно, используйте исключения:
function allValid() {
try
$('input').each(function(index)) {
if (something) { throw 'something happened!'; }
});
catch (e) {
if (e == 'something happened!') {
return false;
} else {
throw e;
}
}
return true;
}