javascript日期格式及合法性验证
来源:互联网 发布:复合的sql语句怎么写 编辑:程序博客网 时间:2024/05/16 13:03
在一般的项目中,常常遇到日期格式的校验问题。在网上搜索了几下,没有找到比较好用的日期校验函数,特别是指定日期格式format(如mmddyyyy)时的校验,为此,花了一点时间,写就如下内容:
<html>
<head>
<script>
/**
* 日期格式及合法性验证
* @author yehailong
* @param obj 需要验证的对象
* @param fmt 日期格式字符串, 由yyymmdd(不区分大小写)组合而成,分隔符可以为'-'、'.'、'/'之一
* @param name 对象显示名,便于提示,如不传此参数,不alert提示
* @return boolean 通过返回true,否则false
*/
function checkDate(obj,fmt,name){
if(obj==null||obj=="undefined"||obj.disabled||obj.value==""){
return true;
}
if(name==null){
name="";
}else{
name="“"+name+"”";
}
var regex = new Array("-",".","/");
var regex0 = "";
for (var i=0;i<regex.length ;i++ ){
if(fmt.indexOf(regex[i])!=-1){
regex0 = regex[i];
break;
}
}
var y = 0;
var m = 0;
var d = 0;
var yearIndex = 0;
var monthIndex = 0;
var dayIndex = 0;
var number = new Array(0,0,0);
var ch = '';
var index = 0;
for (var i=0;i<fmt.length ;i++ )
{
if(ch==''||fmt.charAt(i)==ch){
number[index] = number[index]+1;
}else if(fmt.charAt(i)!=regex0){
index++;
number[index] = number[index]+1;
}
ch = fmt.charAt(i);
if(fmt.charAt(i)=='Y'||fmt.charAt(i)=='y'){
if(y==0){
yearIndex = i;
}
y++;
}
if(fmt.charAt(i)=='M'||fmt.charAt(i)=='m'){
if(m==0){
monthIndex = i;
}
m++;
}
if(fmt.charAt(i)=='D'||fmt.charAt(i)=='d'){
if(d==0){
dayIndex = i;
}
d++;
}
}
var sreg = "";
for(i in number){
if(number[i]!=0){
if(sreg!=""){
sreg += regex0;
}
sreg += "//d{"+number[i]+"}";
}
}
sreg = "^"+sreg+"$";
var reg = new RegExp(sreg ,"i");
if(!reg.test(obj.value)){
alert(name+"格式应匹配'"+fmt+"'");
setFocus(obj);
return false;
}
//判断日期的合法性
var dateStr = obj.value;
var year = "";
var month = "";
var day = "";
year = dateStr.substring(yearIndex,yearIndex+y);
month = dateStr.substring(monthIndex,monthIndex+m);
day = dateStr.substring(dayIndex,dayIndex+d);
if(month.charAt(0)=='0'){
month = month.charAt(1);
}
if(day=="")
day = 1;
var date = new Date(year,month-1,day);
var newYear = date.getFullYear();
var newMonth = date.getMonth()+1;
if(newMonth<10) newMonth = "0"+newMonth;
var newDay = date.getDate();
if(newDay<10) newDay = "0"+newDay;
var newDate = dateStr;
function temp(src,start,end,tgt){
var pre = "";
if(start!=0){
pre = src.substring(0,start);
}
var back = "";
if((end+1)!=src.length){
back = src.substring(end+1,src.length);
}
return pre+tgt+back;
}
if(y!=0){
newDate = temp(newDate,yearIndex,yearIndex+y-1,newYear);
}
if(m!=0){
newDate = temp(newDate,monthIndex,monthIndex+m-1,newMonth);
}
if(d!=0){
newDate = temp(newDate,dayIndex,dayIndex+d-1,newDay);
}
if(dateStr!=newDate){
if(confirm(name+"'"+dateStr+"'自动转换为'"+newDate+"'")){
obj.value = newDate;
}
}
return true;
}
function setFocus(obj){
try{
obj.focus();
var rng = obj.createTextRange(); rng.collapse(false); rng.select();
}catch(e){}
}
function hh(){
var obj = document.getElementById('test');
checkDate(obj,'mmddyyyy','出生日期')
}
</script>
日期:<input type="text" id="test" onblur="checkDate(this,'mmddyyyy','日期')">(mmddyyyy)
- javascript日期格式及合法性验证
- javascript验证给定的日期的合法性
- 日期格式验证javascript
- JavaScript 验证日期格式
- JS验证日期时间(可以检验格式与合法性)
- 用JavaScript验证日期格式
- 用JavaScript验证日期格式
- JAVASCRIPT验证网址合法性
- JAVASCRIPT验证网址合法性
- JAVASCRIPT验证网址合法性
- SAP ABAP验证日期合法性.
- 电子邮件格式合法性验证函数
- 用JavaScript验证日期格式(2)
- jsp中javascript验证日期格式
- JavaScript:一个简单的日期格式验证
- JavaScript:时间日期格式验证大全
- JavaScript验证邮箱的合法性
- JavaScript实现子网掩码合法性验证
- CSDN的blog文本编辑器-FCKeditor
- 最近一个月参加了几个topcoder 的component开发竞赛。
- Google Pager Creator 再次开放
- 几个javascript使用的技巧
- 在MFC应用程序中通过CppSQLite3来使用SQLite3
- javascript日期格式及合法性验证
- 十个小故事,一堂管理课
- 等待戈多
- 后上帝时代的等待者
- 陈天桥:财富榜是场网游 丁磊级别最高
- 王晓华
- Table of ASCII Characters
- 一些算法题的实现
- 硬件VPN和软件VPN的优势对比(转)