2012-03-23 90 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