美国电话号码(000)-000-0000或000-000-0000的MVCvalidation
如何为电话号码validation注释电话号码数据注释?
有没有办法在前端允许这种格式,如使用HTML5模式? 我知道HTML5和MVC3中都有电话号码的数据类型,但是想知道我们是否可以格式化(000)-000-0000或000-000-0000这样的格式,这样用户就不能输入超过10位的数字,如果他输入了一个以上述格式显示的手机。 到目前为止我试过这个:
[Required] [DataType(DataType.PhoneNumber)] [RegularExpression(@"^(\d{10})$", ErrorMessage = "Please enter proper phone number.")] [Display(Name = "phone")] public string Phone { get; set; }
您可能对jQuery mask插件感兴趣。
http://digitalbush.com/projects/masked-input-plugin/
或者,您可以在电话号码输入上设置.blur
,如果有10位数字,则会格式化用户的输入。 例如:
$("#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); });
但是,在第二种情况下,您必须更改正则表达式数据注释,因为以这种方式格式化电话号码将始终使当前正则表达式检查失败。 无论您希望用户提交电话号码的格式应该是此正则表达式validation的格式。
我正在研究同样的事情。 这就是我最终得到的结果:
[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
我有相同的情况,但我能够实现以上格式ex: (111) 111-1111
当开始键入电话号码时,它强制使用以下代码片段/更改根据需要更改格式
- 从电话掩码脚本文件下载脚本文件
-
标记jscript函数ex:
@Html.TextBoxFor(m => m.DayPhone, new { @class = "form_input", onkeydown = "javascript:backspacerDOWN(this,event);", onkeyup = "javascript:backspacerUP(this,event);" })
用你的剃刀语法或方便的asp.net html格式。
希望对你有所帮助!
如果我理解你的问题,你可以使用RegularExpressionAttribute ,然后通过jquery unobrtrusivevalidation你的clietnvalidation你的输入
- 如何设置jQuery ajaxpost的contentType,以便ASP.NET MVC可以读取它?
- 为什么我的AJAXoned Action的回复没有被调用者视为成功?
- SignalR 1.0.1与Chrome的跨域请求(CORS)
- 我如何在mvc 4中使用带有JSONpost的AntiForgeryToken
- 从包含两个下拉列表的表行中,获取选定的值以及更改的下拉列表
- 如何使用自定义格式的jQuery UI DatePicker和MVC 4(dd.MM.yyyy)
- jQuery使用空格读取属性值
- Javascript变量存储Garbage而不是输入框中的值?
- 将动态生成的字符串从View传递给Controller