2011-03-28 252 views
0

我做了一個簡單的驗證插件,如果輸入失敗驗證返回false,問題是這個插件一次只能用於一個輸入。我希望它能夠同時處理所有輸入。jquery - 驗證插件

代碼

$.fn.validate = function(options){ 
    var defaults = { 
     required:true, 
     minChar:0, 
     maxChar:0 
    }, 
    o = $.extend({},defaults, options); 
    this.each(function(){ 
     var $this=$(this); 
     var val = $this.val(); 
     if(o.required==true && val==''){ 
      return false; 
     }else if(o.minChar>0 && val.length < o.minChar){ 
      return false; 
     }else if(o.maxChar>0 && val.length >o.maxChar){ 
      return false; 
     } 
     else{return true;} 
    }); 
} 

呼叫

if(!$('#name').validate()){ 
    $('.name_inline_error').text('require name'); 
    return false;// return false to stop ajax form submiting 
} 

if(!$('#email').validate()){ 
    $('.email_inline_error').text('require email'); 
    return false;// return false to stop ajax form submiting 
} 

什麼代碼需要做的是,如果兩個輸入都是空的,該插件只會告訴名字輸入錯誤,只有當輸入名稱爲經過驗證,表單會告訴電子郵件輸入錯誤。雖然,我想同時看到兩個錯誤。

+4

你爲什麼不只是使用[在真的很棒的驗證插件已存在](http://docs.jquery.com/Plugins/Validation)? – 2011-03-28 19:15:43

+0

謝謝我比閱讀冗長的文檔和冗餘功能更讓我自己做。 – 2011-03-28 19:24:00

+0

有了這個邏輯,爲什麼你使用jQuery? – 2011-03-28 19:30:46

回答

1

當您返回時,您正在跳過其餘的功能。嘗試是這樣的:

valid = true; 

if(!$('#name').validate()){ 
    $('.name_inline_error').text('require name'); 
    valid = false; 
} 

if(!$('#email').validate()){ 
    $('.email_inline_error').text('require email'); 
    valid = false; 
} 

return valid; 

(+1馬特球的評論,但是 - 滾動你自己在這一個是要花費很長的時間)