zss1100
爱就要负责

在用到时间验证时,后台验证会浪费服务器资源,用户也会有等待,
因此想到用自定义验证控件,下面放入了一些经常用的时间运算

由于客户端验证控件不允许前台修改错误信息,所以用个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" id="texth" style="WIDTH: 32px; HEIGHT: 22px" size="1">要求<font color="red">送花时间</font>:
        </td>
        <td class="table-xia" style="BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 20px; BORDER-LEFT: #cccccc 1px solid; BORDER-BOTTOM: #cccccc 1px solid"
         width="70%" colSpan="2" height="30"><asp:textbox id="TextBox6" onfocus="calendar()" runat="server"></asp:textbox>&nbsp;&nbsp;<FONT color="#ff0000">**
          <asp:requiredfieldvalidator id="RequiredFieldValidator5" runat="server" ErrorMessage="必填" ControlToValidate="TextBox6"></asp:requiredfieldvalidator><asp:customvalidator id="CustomValidator1" runat="server" ControlToValidate="TextBox6" ClientValidationFunction="compearday"></asp:customvalidator></FONT></td>
       </tr>
       <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">如有特殊要求或不在上述时间段请电话联系本公司<asp:customvalidator id="Customvalidator3" runat="server" ClientValidationFunction="compeartime" ControlToValidate="RadioButtonList2"></asp:customvalidator></td>
        <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"
         width="70%" colSpan="2" height="30">
         <table cellSpacing="0" cellPadding="0" width="100%" border="0">
          <TBODY>
           <tr>
            <td><asp:radiobuttonlist id="RadioButtonList2" runat="server" RepeatDirection="Horizontal" RepeatColumns="6">
              <asp:ListItem Value="10:00:00">8:00-10:00</asp:ListItem>
              <asp:ListItem Value="13:00:00">10:00-13:00</asp:ListItem>
              <asp:ListItem Value="18:00:00">14:00-18:00</asp:ListItem>
              <asp:ListItem Value="21:00:00" Selected="True">21:00前</asp:ListItem>
             </asp:radiobuttonlist></td>
           </tr>
           <TR>
            <td id="td1" height="16">市区必须提前3小时下单,节假日除外</td>
           </TR>
          </TBODY>
         </table>
        </td>
       </tr> 

posted on 2007-03-04 15:41  打你鸟鸟头  阅读(1516)  评论(0编辑  收藏  举报