0

我需要对页面中的“保存”操作进行自定义验证。要求是,我需要显示警报,当我单击警报中的“确定”按钮时,我的页面不应该被回发。这是我的代码。

function RedirectForSaveValidation(source,arguments) {

    var StatusFlag = '';
    StatusFlag = document.getElementById('<%= HiddenStatusFlag.ClientID%>');

    if (StatusFlag == "F") {
        alert("Selected student entry has been qualified for lead. Entry cannot be modified...!");
        arguments.IsValid = false;
    }
    if (StatusFlag == "Q") {
        alert("Selected student has been scheduled for interview/counselling. Entry cannot be modified...!");
        arguments.IsValid = false;
    }
    if (StatusFlag == "S") {
        alert("Selected student entry has been scheduled with interview/counselling. Entry cannot be modified...!");
        arguments.IsValid = false;
    }
    if (StatusFlag == "I") {
        alert("Selected student entry has been converted to Intake. Entry cannot be modified...!");
        arguments.IsValid = false;
    }
    window.location.assign("EnquiryRegister.aspx");
}

我在按钮单击中调用此函数。

<asp:Button ID="btnSaveEnquiryRegister" runat="server" Text="Save Enquiry Register" CssClass="button" OnClick="btnSaveEnquiryRegister_Click" ValidationGroup="valEnquiry" OnClientClick="RedirectForSaveValidation();"/>

问题是,我没有收到我指定的任何警报,并且我的页面被发回。我错过了什么?

4

4 回答 4

2

解决此问题的正确方法是使用 CustomValidator 控件及其 ClientValidationFunction 属性。有了这个,您可以将您的客户端验证与 ASP.NET 验证功能集成。

查看 MSDN 文档上的示例。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator.clientvalidationfunction.aspx

希望能帮助到你!

问候,

乌罗什

于 2013-10-23T08:29:32.057 回答
0

傻我!问题在于获取隐藏字段的值。

var StatusFlag = '';
StatusFlag = document.getElementById('<%= HiddenStatusFlag.ClientID%>').value;

我错过了包含 value 属性,因此变量具有空值,导致验证器失败。

于 2013-10-23T07:12:47.243 回答
0

您在单击按钮时直接使用自定义验证功能。看你在 Function 和 OnClientClick 中传递了两个参数,你没有传递参数。这个方法应该通过asp.net的CustomValidator控件调用。

或者只是从方法中删除参数。使用不带参数的方法

于 2013-10-23T06:41:49.430 回答
0

好吧,这不是实现自定义验证器的正确方法,请查看http://www.w3schools.com/aspnet/control_customvalidator.asphttp://www.w3schools.com/aspnet/showaspx.asp?filename=demo_customvalidator(告诉你如何正确地做到这一点)但如果你想像这样进行验证,你必须返回 false 以防它无效

所以你的验证函数应该返回 true (如果它是有效的)或者 false 那么

<asp:Button ID="btnSaveEnquiryRegister" runat="server" Text="Save Enquiry Register" CssClass="button" OnClick="btnSaveEnquiryRegister_Click" ValidationGroup="valEnquiry" OnClientClick="return RedirectForSaveValidation();"/> 
于 2013-10-23T06:47:58.517 回答