У меня есть функция проверки элементов класса .sitem
и если какое-либо из них имеет пустое значение, оно должно возвращаться, иначе код должен продолжаться.
if($(".sitem").each(function(ss, element) {
if($(this).val()=="")
{
alertify.error("item name can't be left blank");
return true;
}
return false;
}))
{
return;
}
//go on with your code
функция работает, когда значение пустое, оно предупреждает меня и возвращает false, проблема, когда элемент имеет значение, он не содержит кода, никаких подсказок?
Проблема заключается в .each()
возвращает объект jQuery, который всегда будет правдивым (независимо от значений, возвращаемых каждым обработчиком.... если вы возвращаете false, он просто завершает дальнейшую итерацию набора элементов)
Одним из решений является использование допустимой переменной состояния, например
var valid = true;
$(".sitem").each(function (ss, element) {
if ($(this).val() == "") {
alertify.error("item name can't be left blank");
valid = false;
return true;
}
return false;
})
if (!valid) {
return;
}
return true // continue loop
return false // breaks loop
Так,
var is_valid = true;
$(".sitem").each(function(ss, element) {
if($(this).val()=="") {
alertify.error("item name can't be left blank");
is_valid = false;
return false;
}
});
if(!is_valid) {
return;
}