我现在有个Textbox,提供了个日期控件在旁边.已经可以实现在日期控件中选择显示到Textbox里面了.但是现在还需要验证Textbox的格式是否为日期格式的.因为客户要求能够手动输入.
主要就是:如果输入字符串或者是别的.会提示说输入日期格式不正确,但是为空的话,就不验证.因为在某些情况下,这个Textbox是必须为空的.不为空的话就进行验证.
感觉这个使用微软提供的那几个验证控件好像并不是很好用,但是如果能够实现这样的效果也可以.麻烦各位帮我下.谢谢了.

解决方案 »

  1.   

    我一直用的微軟自帶控件,效果很好啊<ajaxToolkit:MaskedEditValidator ID="mevTaskDate" runat="server" ControlExtender="mexTaskDate"
            ControlToValidate="txtDateFrom" InvalidValueBlurredMessage="Task Date is invalid (mm/dd/yyyy)"
            InvalidValueMessage="Task Date is invalid (mm/dd/yyyy)" EmptyValueBlurredText="*"
            EmptyValueMessage="*" ValidationGroup="vgrpUpdateTask">
      </ajaxToolkit:MaskedEditValidator>  
      

  2.   


    function strShortDateTime(str)
    {
    var r=str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
    if(r==null)return false;
    var d=new Date(r[1],r[3]-1,r[4]);
    return(d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
    }
    这个只是格式判断而已,如果要准确的日期还要多加很多判断,我一般都是不给客户自己填写的
      

  3.   

    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1"
            runat="server" Text="Button" Height="26px" Width="96px" />
        <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
            ControlToValidate="TextBox1" ErrorMessage="RegularExpressionValidator" 
            ValidationExpression="((^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(10|12|0?[13578])([-\/\._])(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(11|0?[469])([-\/\._])(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(0?2)([-\/\._])(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)([-\/\._])(0?2)([-\/\._])(29)$)|(^([3579][26]00)([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][0][48])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][0][48])([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][2468][048])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][2468][048])([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][13579][26])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][13579][26])([-\/\._])(0?2)([-\/\._])(29)$))"></asp:RegularExpressionValidator>
      

  4.   

    嗯,我就是需要格式判断.准确的日期那些我都在程序里面做了判断了.
       一楼的哥们是用08?貌似05没有微软自带的ajax控件.
       二楼的哥们,如果该控件为空的话.怎么判断?请指教
      

  5.   

    再放一个这样的控件:
     <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
            ControlToValidate="TextBox1" Display="Dynamic" ErrorMessage="不能为空"></asp:RequiredFieldValidator>
      

  6.   

    如果空的时候不进行判断不就可以了?
    if (document.Fr.date(控件的name or id).value.length != 0)
    {
       retuen strShortDateTime(Fr.date(控件的name or id).value)
    }
    else
    {
     return true
    }
      

  7.   

    验证时间,,看一下
    <html>
    <head>
    <title>检查是否为时间</title>
    <script language="javascript">
    function check(){ 
    str = form1.txt.value;
    str = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/); 
    if (str == null){
    alert('你输入的时间格式无效'); 
    return false;
    }else if (str[1]>23 || str[3]>59 || str[4]>59){ 
    alert("你输入的时间格式无效"); 
    return false 
    }else{
    alert("你输入的时间格式有效"); 
    return true; 
    }

    </script>
    </head>
    <body>
    <form name="form1" onSubmit="return check()">
    <input type="text" name="txt">
    <input type="submit" value="检查">
    </form>
    </body>
    </html>以下代码