jquery中前台关于日期正确性的校验

近期的项目总结中有一个关于日期控件的,之前的项目中对于日期控件的使用一般会有下面几个情况。

(1) 当点击可以文本框的时候弹出日历控件的选择画面,手动选择日历控件上的时间。这种做法有个极大的好处就是不需要做日期的正确性校验,一般情况也只是比较FROM和TO的关系,保证日期先后顺序的正确性。这个项目中也最常用。

(2) 点击日历符号的时候才弹出日历选择画面,文本框的内容可以手动的输入。这种情况下通常有两种校验方式,一种是在文本框的内容输入后,走js的方法,通过调用日期有效性判断,报出错误信息或者继续下一步的操作。另外一种就是针对文本框的输入内容,限定输入,通过keyup监听输入的内容,然后return想要的内容让一些字符的输入无效。

(3) 对于文本框的输入问题,通常情况下通过输入法的制御来控制只能输入英文字符和数字的制御,需要在后台做相应的代码处理,因为IE的文本框很傻,即使你限制了输入,对于万能的复制粘贴文本框还是无法拒绝的。

另外一个跟这个校验关系不大的,就是文本框的无效设定以后,无效的文本内容是取不到的。通常情况下,都是采用隐藏变量的方法来解决。

日期有效性验证的代码参照下面的代码:

 1 function isValidateDate(date) {
 2      date = $.trim(date);
 3      var reg = /^(\d{4})-(\d{2})-(\d{2})$/;
 4      reg.exec(date);
 5      if (!reg.test(date) && RegExp.$2 <= 12 && RegExp.$3 <= 31) {
 6          return false;
 7      }
 8      var year, month, day;
 9      year = parseInt(date.split("-")[0], 10);
10      month = parseInt(date.split("-")[1], 10);
11      day = parseInt(date.split("-")[2], 10);
12      if (! ((1 <= month) && (12 >= month) && (31 >= day) && (1 <= day))) {
13          return false;
14      }
15      if ((month <= 7) && ((month % 2) == 0) && (day >= 31)) {
16          return false;
17      }
18      if ((month >= 8) && ((month % 2) == 1) && (day >= 31)) {
19          return false;
20      }
21      if (month == 2) {
22          if ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0))) {
23              if (day > 29) {
24                  return false;
25              }
26          } else {
27              if (day > 28) {
28                  return false;
29              }
30          }
31      }
32      return true;
33  }

时间: 2024-10-09 02:38:06

jquery中前台关于日期正确性的校验的相关文章

JQuery中内容操作函数、validation表单校验

JQuery:内容体拼接(可以直接拼接元素节点和内容节点) JQuery实现: 方案1:A.append(B); == B.appendTo(A);A的后面拼接B 方案2: A.prepend(B); == B.prependTo(A);A文本的最前面插入B text()与html()比较: 1.相同点: 都可以设置或获取内容 2.不同点: 获取时,html()获取的是所有内容体:标签+文本 text()获取的只是文本 设置时,如果设置的内容有html()标签 html()设置的内容可以被浏览器

jQuery截取字符串、日期字符串转Date、获取html中的纯文本

jQuery截取字符串.日期字符串转Date.获取html中的纯文本. var com = com || {}; (function ($, com) { /* * 截取字符串 * @param str:要截取的字符串 * @param len:保留多少字符 * @param symbol:超过之后字符串末端要添加的字符 */ com.cutStr = function (str, len, symbol) { if (symbol == undefined) { symbol = "...&q

jquery 解析数据库中的json日期为正常的格式

//在action从后台数据库中请求获得日期以后,得到的是json格式的数据,因此要解析才能显示在前台1.在jsp页面写的代码如下:<html> <script> Date.prototype.format = function(format) { var o = { "M+": this.getMonth() + 1, // month "d+": this.getDate(), // day "h+": this.ge

jQuery mobile 前台设计中的css em的使用。

先贴个网址:http://www.uml.org.cn/html/201207311.asp 大家可以参考一下面这张转换表(body字体为16px时的值) 总结 长篇介绍了一大堆,唯一想告诉大家的是以下几点 1.浏览器的默认字体大小是16px 2.如果元素自身没有设置字体大小,那么元素自身上的所有属性值如“boder.width.height.padding.margin.line-height”等值,我们都可以按下面的公式来计算 1 ÷ 父元素的font-size × 需要转换的像素值 = e

jQuery中的$(window)与$(document)几个用法区别

[window对象]    它是一个顶层对象,而不是另一个对象的属性,即表示浏览器中打开的窗口. 1.属性 defaultStatus 缺省的状态条消息 document 当前显示的文档(该属性本身也是一个对象) frame 窗口里的一个框架((FRAME>)(该属性本身也是一个对象) frames array 列举窗口的框架对象的数组,按照这些对象在文档中出现的顺序列出(该属性本身也是一个对象) history 窗口的历史列表(该属性本身也是一个对象) length 窗口内的框架数 locat

JQuery中ajax使用方法

AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面. 相比于原生AJAX五个步骤,JQuery中的ajax()就显的比较方便,简单实用. JQuery中的ajax()可以访问服务器中方法获得自己想要的参数值. /* *ajax校验验证码  小例子 */ $.ajax({ url:"/您想要请求的servlet位置",//要请求的servlet data:{method

[转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: $.get(),$.post(),$.ajax(),$.getJSON() 一,$.get(url,[data],[callback]) 说明:url为请求地址,data为请求数据的列表,callback为请求成功后的回调函数,该函数接受两个参数,第一个为服务器返回的数据,第二个参数为服务器的状态,

JQuery中Ajax的操作

Java软件开发中,后台中我们可以通过各种框架,像SSH等进行对代码的封装,方便我们对Java代码的编写,例如,Struts,SpringMVC对从前台到action的流程进行封装控制,使我们只需要进行一些简单配置就可以实现:而Spring进行了对各种对象的管理进行封装,提供了AOP编程的方式,大大方便了我们:而Hibernate和IBatis则是对JDBC代码进行封装,不需要我们每次都写那些重复而繁杂的JDBC代码. 前台呢,对于页面一些效果,验证等,我们都是通过JavaScript语言进行完

jquery中一些常用方法总结

1.EL表达式: EL表达式最常用的场景是前后台传递数据,数据格式通常是字符串和list,范围一般是request,用法如下: 后台java代码: 1 String str = "hello world"; 2 request.setAttribute("str",str); 3 4 List<Map> list = new ArrayList<Map>(); 5 Map map1 =new HashMap(); 6 map1.put(&qu