2012-06-21 37 views
0

我有一個新的驗證要求,我試圖圍繞最佳的方式來完成我的頭。jQuery驗證插件 - addMethod要麼/或驗證

我有一個字段,可以是電子郵件地址或用戶名。

該要求要求如果用戶輸入電子郵件,將會運行電子郵件驗證(內置方法),否則驗證將是帶有基本標點符號的字母。

所以我的想法是 - 如果輸入@,運行電子郵件驗證 - 否則運行帶有基本標點符號的字母 - 但我正在尋找可能的其他方法的輸入。

此外,如何在這種情況下編碼兩部分驗證if/else?

+0

葉氏,檢查'@因爲它在電子郵件地址真實需要的(只要它不是在允許的'有效用戶名)。 – Qtax

+0

@Qtax - 是的,@不允許在用戶名 - 所以我假設我需要做一個funcCall,檢查@並運行每個驗證... – Jason

回答

1
$("#frm").validate({ 
      rules: { 
       username: { 
        required: true, 
        usernameemail: true, 
        maxlength: 100 
       } 
      } 
    }); 

    $.validator.addMethod("usernameemail", function(value, element) { 
     if (this.optional(element)) // return true on optional element 
      return true; 
     valid = true; 

     if (value.indexOf("@") > 0) { 
      valid = valid && $.validator.methods.email.call(this, value, element); 
     } else { 
      valid = valid && $.validator.methods.username.call(this, value, element); 
     } 
     return valid; 
    }, 'Please provide a valid username or email'); 

    $.validator.addMethod("username", function(value, element) { 
     return this.optional(element) || /^[a-z0-9\-]+$/i.test(value); 
    }, "Username must contain only letters, numbers, or dashes."); 

您需要更改用戶名正則表達式,你需要什麼,希望這有助於