我有一个页面,我做了一些验证,我所有的验证都是客户端预期的,它使用服务器验证。所以我的问题是,当我触发服务器端验证和页面回发时,此函数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">
答案 0 :(得分: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
阅读有关执行自定义验证的文档:http://www.telerik.com/help/aspnet-ajax/button-validation-with-postback-confirm.html
确保您的验证grops正常,因为在提供的代码段中它们不匹配
文本框的AutoPostBack = true会在您删除文本时回发它,无论此设置中的验证程序如何
以下是一些验证良好的代码:
<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>
的变化:
正确使用OnClientClicking事件
正在设置正确的ValidationGroup
对于etxtbox,CausesValidation = true,因此删除其文本将导致验证并阻止回发