首页 > 解决方案 > 如何在 RadListView 中使用 CustomValidator 验证 CheckBox

问题描述

我有一个Telerik:RadListView控件和多个复选框。我需要在提交表单之前验证这些复选框。我已经尝试过带有属性的内置验证器,ControlToValidate但它给了我一个Control 'chkQuestion' referenced by the ControlToValidate property of 'chkQuestionValidator' cannot be validated.非常合乎逻辑的错误,因为它们都在RadListView.

之后,我创建了一个 CustomValidator;

<asp:CheckBox ID="chkQuestion" 
CssClass="AcceptedAgreement"
 Visible="true" 
runat="server" 
Text=" I confirm" 
AutoPostBack="false" />

<asp:CustomValidator 
ClientValidationFunction="CheckBoxRequired_ClientValidate" 
EnableClientScript="true" 
ID="chkQuestionValidator" 
runat="server" 
Enabled="true" 
SetFocusOnError="true" 
ErrorMessage="Please confirm" 
ForeColor="Red" />

这些都Telerik:RadListView意味着我有多个,但我无法在我的客户端自定义验证器函数中链接它们。

这是我的验证器功能:

   function CheckBoxRequired_ClientValidate(sender, e) {
           var c = jQuery(".AcceptedAgreement input:checkbox");
           var chb = validator

           if (c.is(':checked')) {
               e.IsValid = true;
           } else {
               e.IsValid = false;
           }
       }

但是使用此功能,我无法单独验证它们。当检查了一个复选框时,此功能与所有这些功能都被检查。这是因为它们都有相同的 css 类,这就是我坚持的重点。

如果你帮助我,将不胜感激。

标签: javascriptc#asp.netwebforms

解决方案


对于那些来这里寻求解决方案的人,这里是:

        function handleSubmitForm(sender, args) {
            var c = jQuery(".AcceptedAgreement input:checkbox");
            c.each(function (index) {
                if (!c[index].checked) {
                    args.set_cancel(true);
                }
            });
            args.set_cancel(true);
        }

基本上我将这段代码分配给我的按钮,在回发之前调用它,如果它不符合我的条件,它会停止回发。你可以在 if 子句中做任何你想做的事情。

你可以调用这个函数:

<telerik:RadButton ID="btnSubmit" 
OnClientClicking="handleSubmitForm"
Text="Submit" OnClick="btnSubmit_Click" />

推荐阅读