0

ページでの「保存」操作のカスタム検証が必要です。要件は、アラートを表示する必要があり、アラートの [OK] ボタンをクリックしたときに、ページがポストバックされないようにすることです。これが私のコードです。

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

0

愚かな私!問題は、隠しフィールドの値を取得することでした。

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

value プロパティを含めるのを忘れていたため、変数に空の値があり、バリデーターが失敗しました。

于 2013-10-23T07:12:47.243 に答える
0

ボタンのクリック時にカスタム検証関数を直接使用しています。関数で 2 つのパラメーターを渡しているように見えますが、パラメーターを渡していない OnClientClick です。このメソッドは、asp.net の CustomValidator コントロールを通じて呼び出す必要があります。

または、メソッドからパラメーターを削除するだけです。パラメータなしでメソッドを使用する

于 2013-10-23T06:41:49.430 に答える
0

これは、カスタム バリデータを実装する正しい方法ではありません。このhttp://www.w3schools.com/aspnet/control_customvalidator.aspおよびhttp://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 に答える