2012-03-23 131 views
1

如何爲電話號碼驗證註釋電話號碼數據註釋?美國電話號碼(000)-000-0000或000-000-0000的MVC驗證

有沒有辦法在前端使用這種格式,比如使用HTML5模式?我知道在HTML5和MVC3中都有電話號碼的數據類型,但是想知道我們是否可以用(000)-000-0000或000-000-0000這樣的格式來格式化,所以用戶不能輸入超過10位的數字,if他輸入一個以上述格式顯示的手機。我想這至今:

[Required] 
    [DataType(DataType.PhoneNumber)] 
    [RegularExpression(@"^(\d{10})$", ErrorMessage = "Please enter proper phone number.")] 
    [Display(Name = "phone")] 
    public string Phone { get; set; } 

回答

2

您可能會感興趣一個jQuery面具插件。

http://digitalbush.com/projects/masked-input-plugin/

或者你可以設置您的電話號碼輸入,如果有10個數字,將格式化用戶的輸入.blur。例如:

$("#PhoneNumber").blur(function (event) { 
    var phoneNumber = $(this).val(); 
    // replace all non-numeric characters in phoneNumber 
    // do regex check on remaining digits to ensure there are 10 digits 
    // if regex passes, format phoneNumber however you like 
    %(this).val(phoneNumber); 
}); 

然而,在第二種情況下,你將不得不改變你的正則表達式的數據註解,因爲用這種方式格式化的電話號碼將始終失敗當前的正則表達式檢查。無論您希望用戶提交電話號碼的格式都應該是此正則表達式驗證的格式。

0

如果我理解正確你的問題,你可以使用RegularExpressionAttribute,然後通過jQuery unobrtrusive驗證你有你的clietn驗證你輸入

+0

我需要其上面的格式顯示和驗證僅允許10位數字的服務器端圖案。 – updev 2012-03-23 14:15:20

2

我有同樣的場景,但我是能夠實現上面的格式例如:(111) 111-1111時開始輸入電話號碼,迫使它改變格式,使用下面的代碼片段需要/改變

  1. 從下載的紙條文件phone mask script file
  2. 標籤JScript函數例如:

    @Html.TextBoxFor(m => m.DayPhone, new { @class = "form_input", 
            onkeydown = "javascript:backspacerDOWN(this,event);", 
            onkeyup = "javascript:backspacerUP(this,event);" }) 
    
    在你的剃鬚刀語法或您的方便asp.net html格式

希望能幫助你!

10

我正在尋找同樣的事情。以下是我最終得到的結果:

[Required] 
[DataType(DataType.PhoneNumber)] 
[Display(Name = "Phone number")] 
[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "Not a valid number")] 
public string PhoneNumber { get; set; } 

這會查找3個數字; (可能有括號),可能有短劃線,句點或空格;然後是3個數字,可能是短劃線,句點或空格;然後4個數字。

我偷它從這裏:http://blog.stevenlevithan.com/archives/validate-phone-number

+0

使用@「^ \(?([0-9] {3})\)?[ - 。]?([0-9] {3})[ - 。]?([0-9] {4} )。* $「來代替,以允許擴展結束。 – 2015-02-03 22:11:08