none
MaskedEditValidator 是不是无法校验 dd/mm/yyyy 格式日期 RRS feed

  • 问题

  • 因为老板是香港人,客户的是英国人,网页里要求用 dd/mm/yyyy 的格式,而 MaskedEditValidator 似乎无法校验这种格式?页面属性已经设置了en-GB
    2009年10月20日 1:23

答案

  •   <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <cc1:MaskedEditExtender ID="TextBox1_MaskedEditExtender" runat="server" 
                CultureAMPMPlaceholder="" CultureCurrencySymbolPlaceholder="" 
                CultureDateFormat="" CultureDatePlaceholder="" CultureDecimalPlaceholder="" 
                CultureThousandsPlaceholder="" CultureTimePlaceholder="" Enabled="True" 
                Mask="99/99/9999" MaskType="Date" TargetControlID="TextBox1" MessageValidatorTip="False" 
                CultureName="en-GB">
            </cc1:MaskedEditExtender>
            <cc1:MaskedEditValidator ID="MaskedEditValidator1" runat="server" 
                ControlExtender="TextBox1_MaskedEditExtender" ControlToValidate="TextBox1" 
                InvalidValueMessage="1111"></cc1:MaskedEditValidator>
         
    正确时间通过  不正确时间不通过 比如 30/02/2009不通过 
    • 已标记为答案 scate233 2009年10月21日 1:05
    2009年10月20日 7:55
  •      <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <asp:TextBox ID="TextBox1" onblur="if(!Page_ClientValidate()){ window.setTimeout(function() { AjaxControlToolkit.TextBoxWrapper.get_Wrapper($get('TextBox1')).set_Value(new Date().format('dd/MM/yyyy'));Page_ClientValidate(); }, 500); }" runat="server"></asp:TextBox>
            <cc1:MaskedEditExtender ID="TextBox1_MaskedEditExtender" runat="server" 
                CultureAMPMPlaceholder="" CultureCurrencySymbolPlaceholder="" 
                CultureDateFormat="" CultureDatePlaceholder="" CultureDecimalPlaceholder="" 
                CultureThousandsPlaceholder="" CultureTimePlaceholder="" Enabled="True" 
                Mask="99/99/9999" MaskType="Date" TargetControlID="TextBox1" MessageValidatorTip="False" 
                CultureName="en-GB" >
            </cc1:MaskedEditExtender>
            <cc1:MaskedEditValidator   ID="MaskedEditValidator1" runat="server" 
                ControlExtender="TextBox1_MaskedEditExtender" ControlToValidate="TextBox1" 
                InvalidValueMessage="1111" IsValidEmpty="False"></cc1:MaskedEditValidator>
        
    • 已标记为答案 scate233 2009年10月21日 1:05
    2009年10月20日 14:43

全部回复

  • ValidationExpression 可以设置用于校验的正则表达式
    \d{1,2}/\d{1,2}/\d{4}
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://blog.tanging.net
    2009年10月20日 1:39
    版主
  • 我在 InvalidValueMessage 设了提示,现在不管是 01/01/2009 还是30/02/2009 都有提示出来
    2009年10月20日 2:14
  • 设置 UserDateFormat="MonthDayYear" 注意这个控件验证格式 不验证时间计算
    2009年10月20日 7:21
  • 我现在用 CompareValidator 这个倒是可以 日月年 格式的日期的正确性,但 MaskedEditValidator  在 日月年 下无法验证日期的正确性,就算 01/10/2009 (2009年10月1号)也被认为是错的日期

    2009年10月20日 7:25
  •   <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <cc1:MaskedEditExtender ID="TextBox1_MaskedEditExtender" runat="server" 
                CultureAMPMPlaceholder="" CultureCurrencySymbolPlaceholder="" 
                CultureDateFormat="" CultureDatePlaceholder="" CultureDecimalPlaceholder="" 
                CultureThousandsPlaceholder="" CultureTimePlaceholder="" Enabled="True" 
                Mask="99/99/9999" MaskType="Date" TargetControlID="TextBox1" MessageValidatorTip="False" 
                CultureName="en-GB">
            </cc1:MaskedEditExtender>
            <cc1:MaskedEditValidator ID="MaskedEditValidator1" runat="server" 
                ControlExtender="TextBox1_MaskedEditExtender" ControlToValidate="TextBox1" 
                InvalidValueMessage="1111"></cc1:MaskedEditValidator>
         
    正确时间通过  不正确时间不通过 比如 30/02/2009不通过 
    • 已标记为答案 scate233 2009年10月21日 1:05
    2009年10月20日 7:55
  • 如果发现日期错误的话,自动给编辑框放一个日期该在哪里设?比如用户原来输入了 30/02/2009 ,校验发现错误日期后,把textbox里的日期改成01/01/1900 或当前日期
    2009年10月20日 8:03
  • 先问一下如果校验错误日期 自动给文本框赋值当前时间?表达不太清楚
    2009年10月20日 8:12
  • 就是说,就是校检不通过时改掉textbox里的内容,比如,用户在textbox1里输入了30/02/2009,失去焦点时 CompareValidator  或 MaskedEditValidator   发现日期不合法,然后将textbox1赋值为当前日期 20/10/2009
    2009年10月20日 8:53
  • 等一段时间 正在研究中..............不知道能否测试成功
    2009年10月20日 8:55
  •      <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <asp:TextBox ID="TextBox1" onblur="if(!Page_ClientValidate()){ window.setTimeout(function() { AjaxControlToolkit.TextBoxWrapper.get_Wrapper($get('TextBox1')).set_Value(new Date().format('dd/MM/yyyy'));Page_ClientValidate(); }, 500); }" runat="server"></asp:TextBox>
            <cc1:MaskedEditExtender ID="TextBox1_MaskedEditExtender" runat="server" 
                CultureAMPMPlaceholder="" CultureCurrencySymbolPlaceholder="" 
                CultureDateFormat="" CultureDatePlaceholder="" CultureDecimalPlaceholder="" 
                CultureThousandsPlaceholder="" CultureTimePlaceholder="" Enabled="True" 
                Mask="99/99/9999" MaskType="Date" TargetControlID="TextBox1" MessageValidatorTip="False" 
                CultureName="en-GB" >
            </cc1:MaskedEditExtender>
            <cc1:MaskedEditValidator   ID="MaskedEditValidator1" runat="server" 
                ControlExtender="TextBox1_MaskedEditExtender" ControlToValidate="TextBox1" 
                InvalidValueMessage="1111" IsValidEmpty="False"></cc1:MaskedEditValidator>
        
    • 已标记为答案 scate233 2009年10月21日 1:05
    2009年10月20日 14:43