仅当条件为真时,才将客户端单击确认添加到 asp.net 按钮

Add onclientclick confirmation to asp.net button only if condition is true?

本文关键字:添加 确认 单击 asp 按钮 net 客户端 条件      更新时间:2023-09-26

我有一个jQuery函数在对可编辑的GridView中的文本框进行更改时设置隐藏字段值。 表单上有两个按钮;一个用于保存更改,另一个用于使用新值执行不同的进程。 如果先按下第二个按钮,我希望出现确认,告诉用户更改未保存。单击"是"将保存更改并运行该按钮的进程。单击"否"不执行任何操作。 我不能使用"返回确认('')",因为即使没有检测到更改,也会一直显示确认。 仅当隐藏字段具有值(在本例中为"已更改")时,才应显示确认。 我已经尝试了各种解决方案,但收到有关不存在的函数或其他空对象的错误。

以下内容检测更改并将隐藏字段值设置为"已更改":

$(function () {
    $(".gv input.CAIFormat").bind('blur', function (e) {
         $(this).val(CommaFormatted($(this).val()));
         var change = $get('ctl00_BodyContentPlaceHolder_TabContainer1_tabSpaceDriver_hidSummaryTableChanged');
         change.value = "changed";
    });
});

如果隐藏字段具有值,asp.net 按钮应显示确认:

<asp:Button ID="btnSaveSDDepartmet" runat="server" Text="Update Departments" />

使用 jQuery 将事件绑定到按钮,检查值,然后检查输入的值。

仅供参考 - 开始使用on绑定事件,bind从jQuery 1.7开始被弃用(见 http://api.jquery.com/bind/)

$("btnSaveSDDepartmet").on('click', function (e) {
     var change = $get('ctl00_BodyContentPlaceHolder_TabContainer1_tabSpaceDriver_hidSummaryTableChanged');
     if (change.value == "changed") {
         if (!window.confirm("Changes not saved -- continue?")){
             e.preventDefault();
             return false;
         }
     }
});

文档* jQuery.on - http://api.jquery.com/on/* window.confirm - https://developer.mozilla.org/en-US/docs/DOM/window.confirm

以下方法有效:

<asp:Button ID="btnSaveSDDepartmet" runat="server" Text="Update Departments" CssClass="CAIButton" OnClick="btnSaveSDDepartmet_Click" OnClientClick="if (!ConfirmMsg()) { return false; }" />
        function ConfirmMsg() {
        var obj = $get('ctl00_BodyContentPlaceHolder_TabContainer1_tabSpaceDriver_hidSummaryTableChanged');
        if (obj.value == "changed")
            return confirm("Data has been changed, but not saved. Do you want to save and continue?");
        else
            return false;
    }