[英]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.