ASP.NET MVC验证DateTime的问题
今天碰到一个Bug,在IE8中,日期验证失效,输入正确的日期格式也会验证失败,提示:xxx必须是日期格式(the field xxx must be a date)
最终找到问题所在:jquery.validate.js
// http://docs.jquery.com/Plugins/Validation/Methods/date
date: function( value, element ) {
return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());
},
这段代码会有什么问题呢:在IE6,7,8 newData('2013-08-13') 是会返回 NaN 的,所以会验证通不过。
将上面的代码改为下面的代码就不会出错了
date: function( value, element ) {
return this.optional(element) || !/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(new Date(value).toString());
},
当然不建议在原来插件中修改,复制一个新的文件,改名为jquery.validate.plus.js,将该文件中的方法改了,然后在页面引用的时候做一个浏览器的判断:
<!--[if lt IE 9]>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.plus.js")"></script>
<![endif]-->
这样就解决问题了。但要注意JS的载入顺序:
<script type="text/javascript" src="/Scripts/jquery.validate.js"></script>
<script type="text/javascript" src="/Scripts/jquery.validate.plus.js"></script>
注:
[if lt IE 9]是指IE版本小于IE9的,对IE CSS hack不熟悉的请阅读:http://js8.in/381.html
朋友们,多添加一个JS,按理来说后者会覆盖前者,问题是能够的,但是也许会导致其它莫名其妙的问题,所以为了妥善起见,你只需要在页面上加入以下代码就可以解决这个Bug,而且不会有任何副作用哦。
<!--[if lt IE 9]>
<script type="text/javascript">
$(function () {
$.validator.methods.date = function(value, element) {
return this.optional(element) || !/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(new Date(value).toString());
};
});
</script>
<![endif]-->
ASP.NET MVC验证DateTime的问题的更多相关文章
- Asp.net MVC验证那些事(1)-- 介绍和验证规则使用----[转]--[并修改了部分内容]
Asp.net MVC验证那些事(1)-- 介绍和验证规则使用 -----原文地址链接 数据的有效性验证,是程序开发中必不可少的环节.这篇文章,我们将用一个实例来说明如何在MVC中使用Validati ...
- Asp.net MVC验证哪些事(2)-- 验证规则总结以及使用
上篇文章Asp.net MVC验证那些事(1)-- 介绍和验证规则使用中,介绍了Asp.net MVC中的验证功能以及如何使用.这里将对MVC中内置的验证规则进行总结. 一,查找所有验证规则 上篇文章 ...
- Asp.net MVC验证那些事(4)-- 自定义验证特性
在项目的实际使用中,MVC默认提供的Validation Attribute往往不够用,难以应付现实中复杂多变的验证需求.比如, 在注册用户的过程中,往往需要用户勾选”免责声明”,这个checkbox ...
- ASP.NET MVC验证框架中关于属性标记的通用扩展方法
http://www.cnblogs.com/wlb/archive/2009/12/01/1614209.html 之前写过一篇文章<ASP.NET MVC中的验证>,唯一的遗憾就是在使 ...
- Asp.net mvc验证用户登录之Forms实现
这里我们采用asp.net mvc 自带的AuthorizeAttribute过滤器验证用户的身份,也可以使用自定义过滤器,步骤都是一样. 第一步:创建asp.net mvc项目, 在项目的App_S ...
- Asp.net MVC验证哪些事(3)-- Remote验证及其改进(附源码)
表单中的输入项,有些是固定的,不变的验证规则,比如字符长度,必填等.但有些是动态的,比如注册用户名是否存在这样的检查,这个需要访问服务器后台才能解决.这篇文章将会介绍MVC中如何使用[RemoteAt ...
- ASP.NET MVC验证标注的扩展-checkbox必选
我们知道ASP.NET mvc提供一些表单的验证标注,比如必填属性RequiredAttribute 但是这个属性不适合选择框的必选 但是很多时候,我们却是需要一些必选的单选框 比如网站注册的时候,需 ...
- ASP.NET MVC验证 - jQuery异步验证
本文主要体验通过jQuery异步验证. 在很多的教材和案例中,MVC验证都是通过提交表单进行的.通过提交表单,可以很容易获得验证出错信息.因为,无论是客户端验证还是服务端验证,总能找到与Model属性 ...
- asp.net MVC 验证注解
对于Web系统,对于用户的输入验证是必须的.不仅需要在客户端对用户的输入进行验证,在服务端也需要对用户的执行进行验证. asp.net MVC中对于验证提供了一种注解机制.注解是一种通用机制,可以用来 ...
随机推荐
- win7/64+python3.4+pyinstall3+tkinter+smtp=图形界面群发邮件客户端
#file: GUI_MAIL.py#Date: 2016/01/07#Author: lao_wan import tkinterimport smtplibfrom email.mime. ...
- tensorflow-windows下安装,python3.6
安装: pip install tensorflow ps:我第一次安装了,但是导入却失败了. 进入\python3\Lib\site-packages\删除了tensorflow,再次pip ins ...
- BeanUtils.copyProperties不能copy复杂对象List的解决方式
需要注意的就是把List拆分,遍历add,然后把list设置到返回对象中 package test.test; import java.util.ArrayList; import java.util ...
- 7.25 11figting!
TEXT 76 Start of the long march 而今迈步从头越(陈继龙编译) Nov 16th 2006 | BEIJING AND HONG KONG From The Econom ...
- 迷你MVVM框架 avalonjs 1.2.5发布
avalon1.2.5发布,升级ms-widget,整合avalon.require.text到核心,并且修复了avalon.mobile的avalon.innerHTML方法的BUG,让它能执行脚本 ...
- 容器网络之 veth设备
创建命名空间 # ip netns add mhc # ip link show1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue ...
- 在Spring使用junit注解进行单元测试
在Spring中可以使用junit配合注解进行单元测试 一.常用注解 1.@RunWith(SpringJUnit4ClassRunner.class),让测试运行于spring测试环境2.@Cont ...
- 01d-1: 算法分析
- ubuntu ufw防火墙
由于LInux原始的防火墙工具iptables过于繁琐,所以ubuntu默认提供了一个基于iptable之上的防火墙工具ufw. ubuntu 9.10默认的便是UFW防火墙,它已经支持界面操作了.在 ...
- 怎么查这个文件在linux下的哪个目录
因为要装pl/sql所以要查找tnsnames.ora文件..看看怎么查这个文件在linux下的哪个目录 find / -name tnsnames.ora 查到: /opt/app/oracle/p ...