2013-12-21 5 views
0

У меня есть функция проверки элементов класса .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 

функция работает, когда значение пустое это alertify меня, и возвращает ложь, проблему, когда деталь имеет значение, оно не идти с кодом, любые намеки?

ответ

1

Проблема заключается в том .each() возвращает объект JQuery, который всегда будет truthy (независимо от значения, возвращаемые из каждого обработчика .... если вы возвращаете ложь он просто прекращает дальнейшее повторение набора элементов)

Одно из решений состоит в использовании допустимого переменного состояния, как

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; 
} 
+0

Это работает, спасибо, просто нужно вернуть обратно к false. – ProllyGeek

1
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; 
} 
+0

Я уже знаю это! все равно код не продолжается, как надо! – ProllyGeek

+0

он делает то же самое, что и мой пилот кода, код не идет, он должен! – ProllyGeek