簡體   English   中英

ASP.Net復選框確認消息不起作用

[英]ASP.Net Checkbox Confirm Message not working

我有一個復選框,希望在單擊該對話框時顯示確認消息

我在代碼隱藏文件中添加了事件綁定,如下所示。

chkSMTLock.Attributes.Add("onclick", "return ConfirmSMTLock();");

以下是我的chkSMTLock的 HTML代碼

<asp:CheckBox ID="chkSMTLock" runat="server" AutoPostBack="true" OnCheckedChanged="chkSMTLock_CheckedChanged" Text="SMT Lock" />

這是我的JavaScript:

function ConfirmSMTLock() {
        var r = confirm('Are you sure that you want to SMT lock/unlock this account?');

        console.log(r);
        return r;
    }

當我運行它時,我可以在瀏覽器控制台日志中看到確認值(是/否),但是它沒有調用任何服務器端代碼。

我的服務器端代碼非常簡單,可以記錄日志...

protected void chkSMTLock_CheckedChanged(object sender, EventArgs e)
    {
        Utils.Debug("chkSMTLock_CheckedChanged");
    }

當我刪除復選框的javascript事件綁定時,它將成功執行ServerSide事件。 但是當我放回原處時,它停止工作。

如何使用確認消息框進行控制?

您的驗證在鏈下太遠了。 當您擁有AutoPostBack = true時,基本上就是在單擊復選框時提交了一個表單,您的驗證希望在表單級別進行。

Form.Attributes.Add("onclick", "return ConfirmSMTLock();");

然后在ConfirmSMTLock()中檢查復選框的狀態,以查看是否需要觸發確認對話框。 這是我能想到的最簡單的方法。

附帶說明:如果您這樣做:

chkSMTLock.Attributes.Add("onclick", "return false;");

該復選框不可取消

我找到了答案。 由於AutoPostBack = true,它將自動將帖子發送回服務器。 因此,首先您需要從html代碼中刪除該屬性。

<asp:CheckBox ID="chkSMTLock" runat="server" OnCheckedChanged="chkSMTLock_CheckedChanged" Text="SMT Lock" />

然后,使用ASP.Net的__doPostBack函數實現PostBack行為。

function ConfirmSMTLock() {
        var r = confirm('Are you sure that you want to SMT lock/unlock this account?');

        if (r == true)
        {
            __doPostBack("chkSMTLock", '');            
            return true;
        }
        return false;
    }

打開芝麻!

暫無
暫無

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

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