电脑是跟8月31日有仇吗?为什么不能输入8月31日? 本帖最后由 yacity 于 2010-10-17 20:32:28 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var mm=new Array(1,3,5,7,8,10,12); 这一段代码,测试的时候输入1,3,5,7,10,12 月份 的31日 都没有错。单独输入8月31就提示出错。另外 如果把中间任意一个月份去掉,他就会提示该月份的31日有错。单单是不知道为什么 不能输入 8月31日。强烈郁闷中。 试试var mm=new Array(0,2,4,6,7,9,11); //js中的月是从0开始的 //转换月份 subMM=INDate.substr(area+1,INDate.indexOf(separate,area+1)-(area+1)) if(isNaN(subMM) || subMM<=0){ return true; } if(subMM.length<2){subMM="0"+subMM}改为//转换月份 subMM= parseInt( INDate.substr(area+1,INDate.indexOf(separate,area+1)-(area+1)) ) - 1; 谢谢 sohighthesky 和 wz_307 的帮忙,还是不行呢~!期待中. subMM= parseInt( INDate.substr(area+1,INDate.indexOf(separate,area+1)-(area+1)) ) - 1; 这样子以后 连9月1 日都不行了。 你试试2009-08-33试试能过吗?要能过,说明你的return 写反了,我没读代码,只是看了if (INDate==""){return false;}和if(parseInt(DD)>31){ return true;我感觉都是错误的情况,你返回一个是true,一个是false 每次获取月份加上 1 date().getMonth()+1 var mm=new Array(1,3,5,7,8,10,12); 这一段时用来判断最大天数的,既然已经包含有8月份,为什么 实际运行 还是不能输入8-31? 不知道你们又没有一一测试?var mm=new Array(0,2,4,6,7,9,11); //js中的月是从0开始的这样的结构 岂不是 2,4,6,7,9,11 包含31号???我改了一下 var mm=new Array(0,1,3,5,7,8,10,12);1,3,5,7,8,10,12 月份 31日 全部通过测试可是这样问题又来了 输入 2010-9-31 结果是通过了,然后 asp代码准备把日期添加到数据库,然后SQL数据库出错了~! js中的月份是从0开始的即0 -> 1月; 1 -> 2月; ... ; 11 -> 12月所以说到底, 你输入时是实际月份, 而传递给js的时候要转换成js中的月份, lz再仔细想一下就行了 你这个写得有点复杂哦...function CheckDate(sDate){ var date = new Date(sDate); var arr = sDate.split("/"); if(arr[0] == date.getFullYear().toString() || arr[1] == (date.getMonth() + 1).toString() || arr[2] == date.getDate().toString()){ return true; } return false; } alert(CheckDate("2010/10/12")); alert(CheckDate("2010/10/123")); function CheckDate(sDate){ var date = new Date(sDate); var arr = sDate.split("/"); if(arr[0] == date.getFullYear().toString() && arr[1] == (date.getMonth() + 1).toString() && arr[2] == date.getDate().toString()){ return true; } return false; } alert(CheckDate("2010/10/12")); alert(CheckDate("2010/10/32"));上面的错了 这个可以看一下:关于日期的验证http://student.csdn.net/space.php?uid=119638&do=thread&id=8138 感谢大家的帮助可是 var mm=new Array(0,2,4,6,7,9,11); 也不能解决 8月31日的问题,无论如何都不能输入8月31日。期待解决中。 本帖最后由 net_lover 于 2010-10-22 08:36:50 编辑 本帖最后由 net_lover 于 2010-10-22 15:38:50 编辑 本帖最后由 net_lover 于 2010-10-22 16:09:52 编辑 对如下这段代码不解,还望见教var DA = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; var DA = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];13个数,对应12个月每月的总天数。方便处理,单第一个0是没用,只是占位 很感谢你及时指教,第一眼也认为是一年中每月的总天数,但数了下DA.size=13,就有点蒙胧了 谢谢 net_lover 的帮助 貌似可以用了。但是我的水平实在是有限,因为我的表单还得检测很多东西,所以写了一个总的 checkxiaoshou 函数来调用checkdate。比如以下方法,为什么就不行了呢?function checkxiaoshou() { if (document.form1.sdate.value=="") { alert("请输入销售日期!"); return false; } if(CheckDate(document.form1.sdate.value)) { alert("您输入的销售日期不正确!");document.form1.sdate.focus();return false; }}还有 我这检查日期的函数 checkDate 默认 不输入日期是合法的,因为有时候在查询的时候,不输入日期表示不限制日期,所以不输入日期也要可以通过,当检测到有日期的时候才对他进行检测。如何改写呢? 感觉楼主把问题想复杂了,如果你硬要以你自己的思路来完成。从这几个方面去检查一下。1,是不是把月分搞错了,js中的月份是从0开始的。2,当你在里面做判断时,如果要转化为数字类型的整型数,你要用parseInt('08',10)如果前面没有以0开头到是没关系的。 不输入日期也通过?那么这么写if (document.form1.sdate.value=="") { return true; } 判断条件无法执行是怎么回事? 问个有点难的问题:在表格中如何每隔4行的就变色? 二级联动关联文本框,文本框显示不同内容(非第二个下拉框的内容) 利用单选按钮控制层的出现 为什么在select处添加onchange事件无效?? 一个非常奇怪的问题,是关于得到一个INPUT值然后插入到数据库变成乱码了,请高手指教,在线等!!!!!! 模式对话框 正则匹配求解? 全天下最难的难题大家好谁知道像这网站里的树形菜单http://ymmz.nease.net/txsub/007.htm如果子菜单展开下面还有子菜单 子菜单还可以展开 关于数值型数据精度的问题 Extjs 组件渲染问题 javascript能屏蔽alt键吗?ie8中,让它不执行菜单聚焦
这一段代码,测试的时候输入1,3,5,7,10,12 月份 的31日 都没有错。
单独输入8月31就提示出错。
另外 如果把中间任意一个月份去掉,他就会提示该月份的31日有错。
单单是不知道为什么 不能输入 8月31日。强烈郁闷中。
//转换月份 subMM= parseInt( INDate.substr(area+1,INDate.indexOf(separate,area+1)-(area+1)) ) - 1;
这样子以后 连9月1 日都不行了。
试试能过吗?
要能过,说明你的return 写反了,我没读代码,只是看了
if (INDate==""){return false;}和
if(parseInt(DD)>31){ return true;
我感觉都是错误的情况,你返回一个是true,一个是false
这一段时用来判断最大天数的,既然已经包含有8月份,
为什么 实际运行 还是不能输入8-31?
var mm=new Array(0,2,4,6,7,9,11); //js中的月是从0开始的
这样的结构 岂不是 2,4,6,7,9,11 包含31号???我改了一下
var mm=new Array(0,1,3,5,7,8,10,12);1,3,5,7,8,10,12 月份 31日 全部通过测试可是这样问题又来了 输入 2010-9-31 结果是通过了,然后 asp代码准备把日期添加到数据库,然后SQL数据库出错了~!
即0 -> 1月; 1 -> 2月; ... ; 11 -> 12月所以说到底, 你输入时是实际月份, 而传递给js的时候要转换成js中的月份, lz再仔细想一下就行了
function CheckDate(sDate){
var date = new Date(sDate);
var arr = sDate.split("/");
if(arr[0] == date.getFullYear().toString()
|| arr[1] == (date.getMonth() + 1).toString()
|| arr[2] == date.getDate().toString()){
return true;
}
return false;
}
alert(CheckDate("2010/10/12"));
alert(CheckDate("2010/10/123"));
function CheckDate(sDate){
var date = new Date(sDate);
var arr = sDate.split("/");
if(arr[0] == date.getFullYear().toString()
&& arr[1] == (date.getMonth() + 1).toString()
&& arr[2] == date.getDate().toString()){
return true;
}
return false;
}
alert(CheckDate("2010/10/12"));
alert(CheckDate("2010/10/32"));上面的错了
http://student.csdn.net/space.php?uid=119638&do=thread&id=8138
可是 var mm=new Array(0,2,4,6,7,9,11); 也不能解决 8月31日的问题,无论如何都不能输入8月31日。
期待解决中。
var DA = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
13个数,对应12个月每月的总天数。方便处理,单第一个0是没用,只是占位
但是我的水平实在是有限,
因为我的表单还得检测很多东西,
所以写了一个总的 checkxiaoshou 函数来调用checkdate。
比如以下方法,为什么就不行了呢?function checkxiaoshou() { if (document.form1.sdate.value=="")
{
alert("请输入销售日期!");
return false;
}
if(CheckDate(document.form1.sdate.value))
{
alert("您输入的销售日期不正确!");document.form1.sdate.focus();return false; }
}还有 我这检查日期的函数 checkDate 默认 不输入日期是合法的,因为有时候在查询的时候,不输入日期表示不限制日期,所以不输入日期也要可以通过,当检测到有日期的时候才对他进行检测。如何改写呢?
1,是不是把月分搞错了,js中的月份是从0开始的。
2,当你在里面做判断时,如果要转化为数字类型的整型数,你要用parseInt('08',10)如果前面没有以0开头到是没关系的。
{
return true;
}