Valider asp:contrôle de Case à cocher à côté client à l'aide de JavaScript et CustomValidator de contrôle

J'ai deux cases à cocher. J'ai besoin de vérifier qu'au moins l'un d'entre eux est vérifiée avant que le formulaire est soumis.

J'ai un CustomValidator en place sur la page. Il appelle une fonction pour le côté serveur de validation. J'ai besoin d'ajouter une fonction pour la validation côté client.

Le côté client de la fonction doit être écrit en JavaScript.

(Je ne sais pas si cela fait une différence ici, mais il y a aussi d'autres commandes de l'utilisateur sur la page, comme des zones de texte, qui utilisent d'autres non-validateurs personnalisés).

C'est les cases à cocher et le contrôle de validateur personnalisé:

<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>

Et c'est la fonction appelée pour le côté serveur de validation:

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

J'ai essayé d'écrire le côté client de la fonction 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> 

Cela ne fonctionne pas. La fonction est appelée, la première alerte est affichée, mais... c'est elle! SI l'instruction ne fonctionne pas.

Comment venir? Que dois-je faire pour changer cela, de sorte que la fonction valide les cases à cocher et la forme ne se soumet pas si invalide?

InformationsquelleAutor code2b | 2012-06-19