2013-07-29 48 views
6

我一直在爲此工作幾個小時,似乎無法使其工作。 我需要在我們客戶部分的多個電子郵件中,在同一個輸入字段中。jQuery中的2+(多個)電子郵件已驗證的文本輸入

現在我有(其中一個電子郵件的偉大工程):

<script language="JavaScript"> 
$(document).ready(function(){ 
    $("form#editclient").validate({ 
      rules: { 
      Contact: { 
       required: true 
      }, 
      Clientname: { 
       required: true 
      }, 
      ClientLogin: { 
       required: true 
      }, 
      ClientPassword: { 
       required: true 
      }, 
      email: { 
       required: true, 
       multiemail: true 
      } 
     }, 
     messages: { 
      Contact: { 
       required: "Please enter your Contact Nmae." 
      }, 
      Clientname: { 
       required: "Please enter your Client Name" 
      }, 
      ClientLogin: { 
       required: "Please enter a login." 
      }, 
      ClientPassword: { 
       required: "Please enter a password" 
      }, 
      email: { 
       required: "Please enter an Email Address", 
       multiemail: "You must enter a valid email, or comma separate multiple" 
      } 
     } 
}); 
}); 
</script> 
    <input type="Text" id="email" name="Email" value="#Trim(Email)#" maxlength="60" class="inputText430 email required"> 

我發現這裏面應該接受多個驗證工作:

jQuery.validator.addMethod(
"multiemails", 

function (value, element) { 
    if (this.optional(element)) // return true on optional element 
    return true; 
    var email = value.split(/[;,]+/); // split element by , and ; 
    valid = true; 
    for (var i in email) { 
     value = email[i]; 
     valid = valid && jQuery.validator.methods.email.call(this, $.trim(value), element); 
    } 
    return valid; 
}, 

jQuery.validator.messages.multiemail); 

但我不能讓它正常工作。有人可以幫助我在一個文本字段中驗證兩個或更多電子郵件嗎?

在此先感謝。

(編輯是對規則和信息添加multiemail) (編輯後的下層溶液) SOLUTION

<form> 
    <input id='emailTest' name='emailTest' /> 
    <input type='submit' /> 
</form> 
    <script type="text/javascript"> 
    jQuery.validator.addMethod(
    "multiemail", 
    function (value, element) { 
     var email = value.split(/[;,]+/); // split element by , and ; 
     valid = true; 
     for (var i in email) { 
      value = email[i]; 
      valid = valid && jQuery.validator.methods.email.call(this, $.trim(value), element); 
     } 
     return valid; 
    }, 
    jQuery.validator.messages.multiemail 
); 

$("form").validate({ 
    debug: true, 
    rules: { 
      emailTest: { 
       multiemail: true 
      } 
     }, 
    messages: { 
      emailTest: { 
       multiemail: "You must enter a valid email, or comma separate multiple" 
      } 
     }, 
    submitHandler: function(form) { 
      return false; 
     } 
}); 
+0

它是如何工作不正常?你是否收到錯誤信息,函數沒有被調用?我懷疑有一個錯誤,因爲你在addMethod函數中有'jQuery.validator.messages.multiemails'作爲參數,但是我沒有在你的代碼中看到它的定義,所以你可能會得到一個未定義的變量錯誤。 –

+0

在控制檯中不會出現任何錯誤,並且電子郵件字段的驗證工作方式與正常一樣,因爲它只會將1封電子郵件視爲有效。 –

回答

11

我認爲有在代碼中的一些語義錯誤而導致一些事情發生,你不期待。

我已經設法讓您的自定義處理程序工作,通過名稱而不是按照類型映射到字段 - 我不確定覆蓋在插件中的作品。

rules: { 
    emailTest: { 
     multiemail: true 
    } 
} 

另外,在處理程序中,你有multiemails作爲標識符,並把它稱爲multiemail後來,不知道怎麼的影響,以至於有。

下面是完整的工作示例:http://jsfiddle.net/jbergler/7jXn7/2/

+1

非常感謝!一旦我有了工作的例子,我就可以看到出了什麼問題。非常感謝您的直接幫助。將用解決方案進行更新。 –