2011-12-31 72 views

回答

6

您不需要自定義擴展。您可以使用accept()方法:http://docs.jquery.com/Plugins/Validation/Methods/accept#extension

// input field 
<input type="text" id="eduEmail2" name="eduEmail2" value="[email protected]"/> 

// validation rule 
eduEmail2: { 
    required: true, 
    email: true, 
    accept: 'edu' 
} 

完整的示例:http://jsfiddle.net/M5TmU/2/(基於Brombomb的的jsfiddle)

UPDATE

xecute的評論之後 - 你可以使用自定義的正則表達式。在additional-methods.js你有「pattern」的方法(最後一個文件):

eduEmail3: { 
    required: true, 
    email: true, 
    pattern: /(\.edu\.\w\w)$/ 
} 

完整的示例:http://jsfiddle.net/M5TmU/3/

當然,它並不完美,但仍 - 你不需要編寫自定義的方法:)

附加編輯:國家域名有兩個字母,所以\w\w\w?太多了 - \w\w應該這樣做。我將\w\w\w?留在小提琴中

+0

本地化情況如何? 「edu.fr」,「edu.tr」,「edu.ru」,「edu.de」..?他們也是大學生。 – xecute 2012-01-12 15:21:11

+0

你是對的。我已經用另一個例子更新了我的答案 – BartekR 2012-01-12 18:28:18

+0

完全是我在找的東西。好樣的! – Joe 2012-02-02 22:57:41

7

您可以擴展它並添加自己的規則。

jQuery.validator.addMethod("edu", function(value, element) { 
    // Make it work optionally OR 
    // Check the last 4 characters and ensure they match .edu 
    return (this.optional(element) || value.slice(-4) == ".edu"); 
}, "You must use a .edu email address"); 

$("#myform").validate({ 
    rules: { 
    field: { 
     required: true, 
     email: true, 
     edu: true 
    } 
    } 
}); 

這是一個jsfiddle顯示它如何一起工作以及如何錯誤級聯。只要按下按鈕。

0

您可能仍會收到來自非.edu電子郵件地址的垃圾郵件。

我會建議檢查電子郵件域服務器端。

這樣電子郵件必須是.edu或它不會郵件。

否則,如果我關閉我的瀏覽器中的JavaScript,我可以提交任何電子郵件地址,它會發送。

+0

他只是想向人們展示不帶.edu擴展名的電子郵件是不被允許的。當然,如果你正在做JS過濾或者其他控制,那麼你必須再次控制這些東西。如果沒有服務器端控制,這是不可接受的。 – xecute 2012-01-12 15:19:28