2010-11-24 106 views
2

我有一個jQuery驅動的JavaScript函數,它遍歷字段列表並檢查它們是否爲空;如果是這樣,則阻止提交表單。從JavaScript的內部函數返回?

required_fields.forEach(function(field) { 
    if (field.val() == '') 
    { 
     field.addClass('field-highlight'); 
     return false; 
    } 
    else 
    { 
     field.removeClass('field-highlight'); 
    } 
}); 

// I want to return to here from the return false point 

我該如何構造這個不同的做我想要的?

回答

5

只需使用一個變量來跟蹤驗證:

var is_valid = true; 

required_fields.forEach(function(field) { 
    if (field.val() == '') { 
     field.addClass('field-highlight'); 
     is_valid = false; 
     return false; 
    } else { 
     field.removeClass('field-highlight'); 
    } 
}); 

return is_valid; 

或者,您也可以只使用field-highlight類以及:

required_fields.forEach(function(field) { 
    if (field.val() == '') { 
     field.addClass('field-highlight'); 
     return false; 
    } else { 
     field.removeClass('field-highlight'); 
    } 
}); 

return $('.field-highlight').length == 0; 
0

使用布爾在foreach關閉,這如果字段值爲空,則設置爲true。提交表單前檢查值

0

這聽起來像你想要做以下

  • 更新基於它們是否具有值
  • 座表單提交如果與field-highlight類元素任何空

如果是的話請嘗試以下

var anyEmpty = false; 
required_fields.forEach(function() { 
    if ($(this).value() == '') { 
    $(this).addClass('field-highlight'); 
    anyEmpty = true; 
    } else { 
    $(this).removeClass('field-highlight'); 
    } 
}); 

if (anyEmpty) { 
    // Block the form 
} 
0

你寫了「forEach」函數嗎?如果是這樣,那可以檢查anon函數的返回值,如果它是假的,則停止迭代。

+0

的forEach是一個jQuery助手功能 – 2010-11-24 22:11:46

0

如果required_fields是一個jQuery對象,你可能只是這樣做:

var stop = required_fields.removeClass('field-highlight') 
          .filter("[value == '']").addClass('field-highlight') 
          .length; 

return !!stop 

或者更有效的這樣嗎?

var stop = required_fields.filter('.field-highlight').removeClass('field-highlight') 
          .end().filter("[value == '']").addClass('field-highlight') 
          .length; 

return !!stop