2010-01-28 63 views

回答

4

下面是一個例子功能:

function valid(array) { 
    if(typeof array != 'object' || array.length < 1) return false; // some basic error checking 
    var errors = []; 
    var alen = array.length; 
    for(var a = 0; a < alen; a++) { 
     if(array[ a ].value.length < 1) errors.push(array[ a ]); 
    } 
    if(errors.length >= 1) return errors; 
    return true; 
} 

用法:

function submitForm() { 
    var inputs = document.getElementsByTagName('input'); 

    var errors = valid(inputs); 
    if(errors) { 
     var elen = errors.length; 
     for(var e = 0; e < elen; e++) { 
      errors[ e ].className = "error"; 
     } 
     event.preventDefault(); 
     return false; 
    } 
} 

var form = document.getElementById('myForm').onsubmit = submitForm; 

如果您使用的是框架,這會更容易。

+0

一個小的錯字,在設置錯誤類時應該是'errors [e] .className =「error」;',我也會推薦使用正常的'for'或'while'循環代替'for。 ..in'語句迭代數組... – CMS 2010-01-28 06:16:28

+0

@CMS,更正了所有的錯誤,並且我將'for ... in' in's更改爲'for's,但是我不確定爲什麼你更喜歡那個'for ... in'。 – 2010-01-28 06:29:54

+1

'for ... in'語句應該用於迭代對象屬性,不建議用於數組,因爲它在原型鏈中上升,並且如果某些東西擴展了本地的'Array.prototype'對象(一些類似MooTools的庫做這些),那些屬性也會迭代,另一點是迭代的順序不能保證,所以元素可能不會以其數字順序訪問。更多信息:https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Statements/For...in#section_4 – CMS 2010-01-28 06:51:17