繁体   English   中英

使用JavaScript和CustomValidator控件在客户端验证asp:CheckBox控件

[英]Validate asp:CheckBox control on client side using JavaScript and CustomValidator control

我有两个复选框。 在提交表单之前,我需要检查至少检查了其中之一。

我在页面上有一个CustomValidator。 它调用用于服务器端验证的函数。 我需要添加一个用于客户端验证的功能。

客户端功能应使用JavaScript编写。

(我不知道这是否有区别,但是页面上还有其他用户控件,例如textBoxes,它们使用其他非自定义验证器)。

这是复选框和自定义验证程序控件:

<tr>
    <td colspan="3">
        <asp:CheckBox id="EmailCourse" name="EmailCourse" runat="server" />
         Email course
    </td>
</tr>
<tr>
    <td colspan="3">
        <asp:CheckBox name="SpecialReport" id="SpecialReport" runat="server" />
            Special report
    </td>
</tr>
<tr>
    <td colspan="3">
        <asp:CustomValidator id="CustomValidator1" runat="server" ErrorMessage="No checkbox checked" CssClass="error" ClientValidationFunction="validateCheckboxes_ClientValidate" OnServerValidate="validateCheckBoxes_ServerValidate"></asp:CustomValidator>
    </td>
</tr>

这是用于服务器端验证的功能:

protected void validateCheckBoxes_ServerValidate(object source, ServerValidateEventArgs args)
    {
        if (!EmailCourse.Checked && !SpecialReport.Checked)
            args.IsValid = false;
        else
            args.IsValid = true;
    }

我尝试编写客户端功能validateCheckboxes_ClientValidate:

    <script type="text/javascript" language="javascript">

        function validateCheckboxes_ClientValidate(oSrc, args) {
            alert("inside function");
            var ec = document.getElementById("EmailCourse");
            var sr = document.getElementById("SpecialReport");
            if (!sr.checked && !ec.checked) {
                alert("hi it works");
                args.IsValid = false;
            }
            else {
                alert("one of them is checked");
                args.IsValid = true;
            }
        }
</script> 

这行不通。 调用该函数,显示第一个警报,但是...就这样! IF语句不起作用。

怎么会? 我需要做些什么来更改此设置,以使该函数实际验证复选框,并且如果无效则不提交表单?

我尝试了您的代码,但DID只能在使用主页面的页面上正常工作。

可能存在两种可能的问题,一种是母版页下面列出的,已更改了最终生成的标识中的ID,如下所示,在这种情况下,您必须使用MainContent_EmailCourse作为JS中的ID

<td colspan="3">
    <span name="EmailCourse"><input id="MainContent_EmailCourse" type="checkbox" name="ctl00$MainContent$EmailCourse" /></span>
     Email course
</td>

特别报告

或者可能是浏览器特定的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM