验证(Page_ClientValidate('mygroup'))在回发后返回true

时间:2014-12-23 22:27:20

标签: javascript jquery asp.net validation telerik

我有一个页面,我做了一些验证,我所有的验证都是客户端预期的,它使用服务器验证。所以我的问题是,当我触发服务器端验证和页面回发时,此函数Page_ClientValidate('mygroup')返回true,所以虽然我的必填字段不是,但我失去了验证。

function DoValidation() { var validated = Page_ClientValidate('NewMemberRequired'); Page_BlockSubmit = false; return validated; }

<telerik:RadButton ID="btnSave" runat="server" Text="Save & Close" OnClick="btnSave_Click" CausesValidation="true"
                                OnClientClick="return DoValidation();">

//the fields 
<asp:RequiredFieldValidator ID="AddressRequired" runat="server" ControlToValidate="Address"
                        CssClass="ErrorMessage" ErrorMessage="Required"ValidationGroup="mygroup"><asp:RequiredFieldValidator/>

//an other filed with postback=true
<telerik:RadTextBox ID="age" runat="server"  AutoPostBack="True" OnTextChanged="age_TextChanged">

1 个答案:

答案 0 :(得分:1)

  1. 阅读有关使用RadButton客户端事件的文档,因为即使不会导致错误,您的方法也无法正常工作:http://www.telerik.com/help/aspnet-ajax/button-onclientclicking.html。这也可以提供帮助:http://blogs.telerik.com/aspnet-ajax/posts/12-08-10/migrating-onclientclick-handlers-from-asp-button-to-telerik-s-asp-net-ajax-button.aspx

  2. 阅读有关执行自定义验证的文档:http://www.telerik.com/help/aspnet-ajax/button-validation-with-postback-confirm.html

  3. 确保您的验证grops正常,因为在提供的代码段中它们不匹配

  4. 文本框的AutoPostBack = true会在您删除文本时回发它,无论此设置中的验证程序如何

  5. 以下是一些验证良好的代码:

            <telerik:RadButton ID="btnSave" runat="server" Text="Save & Close" OnClick="btnSave_Click" CausesValidation="true"
                               OnClientClicking="DoValidation">
            </telerik:RadButton>
            //the fields
            <asp:RequiredFieldValidator ID="AddressRequired" runat="server" ControlToValidate="Address"
                                        CssClass="ErrorMessage" ErrorMessage="Required" ValidationGroup="mygroup">
            </asp:RequiredFieldValidator>
    
            //an other filed with postback=true
            <telerik:RadTextBox ID="Address" runat="server" AutoPostBack="True" OnTextChanged="age_TextChanged" ValidationGroup="mygroup" CausesValidation="true">
            </telerik:RadTextBox>
    
            <script>
                function DoValidation(sender, args) {
                    var validated = Page_ClientValidate('mygroup');
                    args.set_cancel(!validated);
                    Page_BlockSubmit = false;
                }
            </script>
    

    的变化:

    1. 正确使用OnClientClicking事件

    2. 正在设置正确的ValidationGroup

    3. 对于etxtbox,CausesValidation = true,因此删除其文本将导致验证并阻止回发