2013-04-30 150 views
2

我已經設法修改了一個jQuery表單驗證示例來處理我的網站,但我不知道如何確保它只是在電話號碼字段中輸入的數字,並且只是在電子郵件字段中輸入的電子郵件地址。如何使用jquery.validate.min.js驗證電話號碼和電子郵件?

請任何人都可以幫忙嗎?

也想知道是否有什麼可以改善?

<script language="javascript" type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.min.js"></script> 
<script> 
$(function() { 
    $("#quickform").validate({ 
      rules: { 
        name: { 
         required: true 
        }, 
        phone: { 
         required: true, 
         phonevalidation: true 
        }, 
        email: { 
         required: true, 
         emailvalidation: true 
        }, 
        enquiry: { 
         required: true 
        } 

      }, 
      messages: { 
        name: { 
         required: "Please enter your name."       
        }, 
        phone: { 
         required: "Please enter your phone number."       
        }, 
        email: { 
         required: "Please enter your email address."       
        }, 
        enquiry: { 
         required: "Please enter your enquiry."       
        } 
      }, 
    }); 
    $.validator.addMethod("phonevalidation", 
      function(value, element) { 
        return /^[A-Za-z\d=#$%@_ -]+$/.test(value); 
      }, 
    "Please enter a valid phone number." 
    ); 
    $.validator.addMethod("emailvalidation", 
      function(value, element) { 
        return /^[A-Za-z\d=#$%@_ -]+$/.test(value); 
      }, 
    "Please enter a valid email address." 
    ); 
}); 
</script> 

編輯:

已經有很多的例子驗證方法,但它是不接受特殊字符。我只需要了解如何將/^[A-Za-z \ d =#$%@ _ - ] + $ /更改爲電子郵件和數字驗證。

+2

「我不知道如何確保它在進入只是數字電話號碼字段「 - 不要。相反,讓人們格式化他們的電話號碼。您可以在服務器上刪除格式化字符。 – Quentin 2013-04-30 11:38:15

+0

感謝您的回覆。對不起,我應該更清楚。該示例中已經有驗證方法,但不接受特殊字符。我只需要了解如何將/^[A-Za-z \ d =#$%@ _ - ] + $ /更改爲電子郵件和數字驗證。 – Chris 2013-04-30 11:49:17

回答

4

有已經存在於驗證框架emailphone規則

<script language="javascript" type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.min.js"></script> 
<script language="javascript" type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/additional-methods.js"></script> 
<script> 
$(function() { 
    $("#quickform").validate({ 
     rules: { 
      name: { 
       required: true 
      }, 
      phone: { 
       required: true, 
       phoneUK: true //or look at the additional-methods.js to see available phone validations 
      }, 
      email: { 
       required: true, 
       email: true 
      }, 
      enquiry: { 
       required: true 
      } 

     }, 
     messages: { 
      name: { 
       required: "Please enter your name."       
      }, 
      phone: { 
       required: "Please enter your phone number."       
      }, 
      email: { 
       required: "Please enter your email address."       
      }, 
      enquiry: { 
       required: "Please enter your enquiry."       
      } 
     }, 
    }); 

}); 
</script> 
+0

將是很好的注意到我們假定你是美國的電話號碼... – excentris 2013-04-30 11:56:13

+0

@netrunner我和它一起 – 2013-04-30 11:57:10

+0

添加備註,這是偉大的!我現在使用您的示例來獲取電子郵件地址,並使用上面的答案進行英國電話號碼驗證。謝謝! – Chris 2013-04-30 12:00:29

1

我建議建立一個正則表達式和匹配到了用戶輸入,並使用匹配()函數。

有關如何構建正確的正則表達式的詳細信息(根據您所在地區)去RegExp tutorial

+0

感謝您的回覆。對不起,我應該更清楚。該示例中已經有驗證方法,但不接受特殊字符。我只需要了解如何將/^[A-Za-z \ d =#$%@ _ - ] + $ /更改爲電子郵件和數字驗證。 – Chris 2013-04-30 11:49:59

1

我有英國的電話號碼驗證

jQuery.validator.addMethod('phoneUK', function(phone_number, element) { 
         phone_number = phone_number.replace(/\s+/g, ''); 
         return this.optional(element) || phone_number.match(/^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}$/); 
        }, 'Please specify a valid phone number'); 


        $('#inputTelephone').rules('add', { 
         required: true, 
         phoneUK: true 
        }); 
+0

完美!我並不希望驗證它,所以它只接受英國格式的電話號碼:-) – Chris 2013-04-30 11:59:19

+0

實際上,經過進一步測試後,它無法正常工作。慣於接受我的標準0121座機號碼帶或不帶空格: -/ – Chris 2013-04-30 12:06:07