首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MaskedEditValidator在客户端不起作用

MaskedEditValidator在客户端不起作用
EN

Stack Overflow用户
提问于 2012-11-17 01:00:56
回答 1查看 1.9K关注 0票数 1

我尝试对用户输入的时间信息强制执行15分钟的粒度。例如,中午12:15、凌晨3:45和上午9:30都是可以接受的,但下午2:35是不允许的。服务器端验证是有效的,但是如果用户在单击submit按钮之前,在文本框失去焦点时被告知他们的输入是无效的,那就更好了。代码如下:

代码语言:javascript
复制
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="True" UpdateMode="Always">
            <ContentTemplate>
                <asp:TextBox ID="txtStartTime" runat="server" AutoPostBack="True" CausesValidation="True"/>
                <Ajax:MaskedEditExtender ID="txtStartTime_MaskedEditExtender" runat="server" 
                    TargetControlID="txtStartTime" MaskType="Time" AcceptAMPM="True"
                    Mask="99:99">
                </Ajax:MaskedEditExtender>
                <asp:RequiredFieldValidator runat="server" ID="StartTimeRequired" 
                    ValidationGroup="EventAddEditControls" ControlToValidate="txtStartTime" 
                    EnableClientScript="True" SetFocusOnError="True">*</asp:RequiredFieldValidator>
                <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
                    ErrorMessage="Invalid time format." ControlToValidate="txtStartTime" 
                    ValidationGroup="EventAddEditControls" SetFocusOnError="True" 
                    EnableClientScript="True" Text="Invalid time format."
                    ValidationExpression="^([1-9]|0[1-9]|1[012]):(00|15|30|45)\s?[aApP]\.?[mM]\.?$" />
                <Ajax:MaskedEditValidator ID="MaskedEditValidator1" ControlToValidate="txtStartTime"
                    ControlExtender="txtStartTime_MaskedEditExtender" IsValidEmpty="False" 
                    ValidationGroup="EventAddEditControls" 
                    ValidationExpression="^([1-9]|0[1-9]|1[012]):(00|15|30|45)\s?[aApP]\.?[mM]\.?$" 
                    EnableClientScript="True" SetFocusOnError="True" Text="Time format is invalid."
                    runat="server"></Ajax:MaskedEditValidator>
            </ContentTemplate>
        </asp:UpdatePanel>

我怎样才能让MaskedEditExtender在客户端也执行15分钟的粒度限制(假设这是可能的)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-21 14:00:26

这看起来过于简单,但它似乎是有效的。

我做的第一件事就是注释掉RegularExpressionValidator --您并不需要同时使用这个和MaskedEditValidator。为了证明这一点,请应用下面的修复,但不要注释掉RegularExpressionValidator。在验证失败时,您将看到这两个错误。

最后一件事是用InvalidValueMessage属性替换MaskedEditValidatorText属性:

代码语言:javascript
复制
<Ajax:MaskedEditValidator ID="MaskedEditValidator1" ControlToValidate="txtStartTime"
    ControlExtender="txtStartTime_MaskedEditExtender" IsValidEmpty="False" 
    ValidationGroup="EventAddEditControls" 
    ValidationExpression="^([1-9]|0[1-9]|1[012]):(00|15|30|45)\s?[aApP]\.?[mM]\.?$" 
    EnableClientScript="True" SetFocusOnError="True"
    InvalidValueMessage="Time format is invalid." runat="server">
</Ajax:MaskedEditValidator>

This example给了我关于要使用的正确属性的提示。

执行这两项操作都会导致在跳出控件时进行验证。这也表明MaskedEditValidator一直在验证。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13421092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档