在用到时间验证时,后台验证会浪费服务器资源,用户也会有等待,
因此想到用自定义验证控件,下面放入了一些经常用的时间运算
由于客户端验证控件不允许前台修改错误信息,所以用个td来代替。
为了防止空格和无内容时也会抖动,td在无错误时加入文字
同时,此例中的送花日期TextBox6用到了梅花雪的日历控件。
因为日期型数据默认读取的日期为yyyy-M-d型,梅花雪控件日期形式为yyyy-MM-dd型,所以都需要转换为yyyy-MM-dd型
compearday中的compdt3为后台设置的订单支持上限日期
<SCRIPT language="JavaScript">
<!--
function compearday(source,value)
{
var compdt1 = new Date();
compdt1=document.getElementById("TextBox6").value;
var year = new Date().getYear();
var month = new Date().getMonth()+1;
var day = new Date().getDate();
if(month<10)month="0"+month;
if(day<10)day="0"+day;
var compdt2 = year+'-'+month+'-'+day;//今天
//execScript('monthafter = DateAdd("M", 1, date())','vbscript'); //一个月后今天//得到的是UTC日期格式
//var s=new Date(monthafter);
//function appendZero(s){return ("00"+s).substr((""+s).length);}
//var compdt3 = s.getFullYear() + "-" + appendZero(s.getMonth()+1) + "-" + appendZero(s.getDate());//转换格式yyyy-MM-dd
var compdt3 = new Date();//天数上限日期
compdt3=document.getElementById("texth").value;
if(compdt1<compdt2||compdt1>compdt3)//小于今天或者大于上限日期
value.IsValid = false;
else
value.IsValid = true;
}
//-->
function compeartime(source,value)
{
var compdt1;
compdt1=document.getElementsByName("RadioButtonList2");
for(i=0;i<compdt1.length;i++)
{
if(eval('document.all.RadioButtonList2_' + i).checked)
{
var str;
var now=new Date();
var s=new Date(now);
function appendZero(s)
{
return ("00"+s).substr((""+s).length);
}
//var compdt2 = s.getFullYear() + "年" + appendZero(s.getMonth()+1) + "月" + appendZero(s.getDate()) + "日 " + appendZero(s.getHours()) + ":" + appendZero(s.getMinutes()) + ":" + appendZero(s.getSeconds());
var compdt2 = new Date().getYear() + "年" + (new Date().getMonth()+1) + "月" + new Date().getDate() + "日 " + appendZero(s.getHours()) + ":" + appendZero(s.getMinutes()) + ":" + appendZero(s.getSeconds());
//var compdt3 = s.getFullYear() + "年" + appendZero(s.getMonth()+1) + "月" + appendZero(s.getDate()) + "日 "
var compdt3 = new Date().getYear() + "年" + (new Date().getMonth()+1) + "月" + new Date().getDate() + "日 "
var compdt4 = s.getFullYear() + "-" + appendZero(s.getMonth()+1) + "-" + appendZero(s.getDate());//今天
var compdt5 = document.getElementById("TextBox6").value;
if(compdt4==compdt5)//如果选择的是今天送花
{
if(AddHours(3)>(compdt3 +"21:00:00"))//现在时间+3小时大于今天的21点
{
value.IsValid = false;
str='<font color=red>今天已经不够时间准备,请下明天的订单!</font>';
td1.innerHTML=str;
}
else
{
value.IsValid = true;
str="市区必须提前3小时下单,节假日除外";
td1.innerHTML=str;
if(compdt2>compdt3 + eval('document.all.RadioButtonList2_' + i).value)//现在时间大于选择的时间,时间出错
{
value.IsValid = false;
str='<font color=red>送花时间出错!</font>';
td1.innerHTML=str;
}
else
{
value.IsValid = true;
str="市区必须提前3小时下单,节假日除外";
td1.innerHTML=str;
if(AddHours(3)>compdt3 + eval('document.all.RadioButtonList2_' + i).value)//现在时间3小时后大于选择的时间,来不及准备
{
value.IsValid = false;
str='<font color=red>时间来不及准备,请选择下一个时间段!</font>';
td1.innerHTML=str;
}
else
{
value.IsValid = true;
str="市区必须提前3小时下单,节假日除外";
td1.innerHTML=str;
}
}
}
}
else
{
value.IsValid = true;
str="市区必须提前3小时下单,节假日除外";
td1.innerHTML=str;
}
}
}return false;
}
function AddHours(hourvalue) //现在时间+N=N几小时后时间
{
HoursToAdd=hourvalue;
var newdate=new Date();
var newtimems=newdate.getTime()+(HoursToAdd*60*60*1000);
newdate.setTime(newtimems);
return newdate.toLocaleString();
}
</script>
<tr bgColor="#ffffff">
<td class="table-xia" style="BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; BORDER-BOTTOM: #cccccc 1px solid"
align="right" width="30%" height="30"><input type="hidden" runat="server" >市区必须提前3小时下单,节假日除外</td>
</TR>
</TBODY>
</table>
</td>
</tr>