簡體   English   中英

為ASP:.NET Webform按鈕啟用或禁用javascript的e.preventDefault

[英]enable or disable e.preventDefault of javascript for ASP:NET webform button

我正在研究ASP.NET 3.5 Webform應用程序。 我在網絡表單中有提交按鈕

   <cc1:FlatButton ID="btnSubmit" runat="server" class="positive" Text="Submit Assessment" OnClick="btnSubmit_Click" RemoveDiv="True" />

后者在代碼后調用OnClick =“ btnSubmit_Click。

protected void btnSubmit_Click(object sender, EventArgs e)
    {
         ....

現在,我還有其他要求,請提供消息框,即警報,當用戶單擊上方的“提交”按鈕時出現,並根據用戶選項的選擇來決定是否提交表單

我的問題是,當用戶選擇否時,如何防止基於用戶選擇ieepreventDefault()的btnSubmit_Click事件背后的代碼調用,否則繼續調用btnSubmit_Click

現在下面的代碼不會停止調用服務器代碼,因為我在流程流的后期調用e.preventDefault()。

對於暫停服務器調用,有什么辦法可以實現嗎???

jQuery代碼

 $(document).ready(function () {

        createDialogElements();

        $("#ctl00_ContentArea_btnSubmit").click(function (e) {

           $("#WindowMessageDialog").jqxWindow('open');

           $("#messageDialog_btn_no").click(function () {

               alert("answer is no");

               e.preventDefault();
           });

           $("#messageDialog_btn_yes").click(function () {

               alert("answer is yes");
           });
        });

您可以將OnClientClick屬性用於asp.net中的服務器控件。

問題是,當您單擊提交按鈕時,將觸發OnClientClick定義的函數,其結果必須為true或false,才能繼續或取消提交。 在您的示例中,您正在打開一個對話框並等待用戶單擊,但是javascript不會停止等待用戶的操作。

如果這是使用javascript進行的簡單驗證(例如必填字段),則任何期望值都將非常簡單。

有一些解決方案。 我能想到的最簡單(但並非更好)是創建一個變量來控制是否可以提交表單。 當您單擊提交時,它將調用一個javascript函數,該對話框將打開您的對話框,並返回false,因此將不提交該表單。

對話框關閉時,如果表單有效,它將提交表單。

嘗試此操作,以在單擊時設置客戶端功能:

 <cc1:FlatButton ID="btnSubmit" runat="server" class="positive" Text="Submit Assessment" OnClick="btnSubmit_Click" OnClientClick="if (validForSubmit) return true; else  return validateForm();" RemoveDiv="True" />

並使用以下Javascript函數替換您的jQuery代碼:

var validForSubmit = false;

function validateForm() {
    $("#WindowMessageDialog").jqxWindow('open');

    $("#messageDialog_btn_no").click(function () {
       alert("answer is no");
       return false;
    });

    $("#messageDialog_btn_yes").click(function () {
       alert("answer is yes");
       // set form as valid for submit
       validForSubmit = true;
       // fire the click, because the form is now valid
       $("#ctl00_ContentArea_btnSubmit").click();
       return true;
    });

    return false;
}

您可能需要修復某些問題,但這是個主意,希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM