Javascript 是否仅当条件为真时才将OnClient单击确认添加到asp.net按钮?

Javascript 是否仅当条件为真时才将OnClient单击确认添加到asp.net按钮?,javascript,jquery,asp.net,confirm,Javascript,Jquery,Asp.net,Confirm,我有一个jQuery函数,当在可编辑的GridView中更改文本框时,它会设置一个隐藏字段值。表单上有两个按钮;一个用于保存更改,另一个用于使用新值执行不同的流程。如果第一次按下第二个按钮,我希望显示确认信息,告诉用户更改未保存。单击“是”将保存更改并运行该按钮的流程。单击“否”不起任何作用。我不能使用“return confirm(“”)”,因为这将始终显示确认,即使没有检测到更改。只有当隐藏字段具有值(在本例中为“已更改”)时,才会显示确认。我尝试过各种解决方案,但在函数不存在或其他空对象方

我有一个jQuery函数,当在可编辑的GridView中更改文本框时,它会设置一个隐藏字段值。表单上有两个按钮;一个用于保存更改,另一个用于使用新值执行不同的流程。如果第一次按下第二个按钮,我希望显示确认信息,告诉用户更改未保存。单击“是”将保存更改并运行该按钮的流程。单击“否”不起任何作用。我不能使用“return confirm(“”)”,因为这将始终显示确认,即使没有检测到更改。只有当隐藏字段具有值(在本例中为“已更改”)时,才会显示确认。我尝试过各种解决方案,但在函数不存在或其他空对象方面出现错误

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

$(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:Button ID="btnSaveSDDepartmet" runat="server" Text="Update Departments" />
<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;
    }
如果隐藏字段有值,asp.net按钮应显示确认信息:

$(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:Button ID="btnSaveSDDepartmet" runat="server" Text="Update Departments" />
<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;
    }

以下各项工作正常:

$(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:Button ID="btnSaveSDDepartmet" runat="server" Text="Update Departments" />
<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;
    }

函数ConfirmMsg(){
var obj=$get('ctl00_BodyContentPlaceHolder_TabContainer1_tabSpaceDriver_hidSummaryTableChanged');
如果(对象值==“已更改”)
返回确认(“数据已更改,但未保存。是否保存并继续?”);
其他的
返回false;
}

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

仅供参考--开始在上使用
来绑定事件,
bind
从jQuery 1.7开始就被弃用(请参阅)

文档 *
jQuery.on
-
*
window.confirm
-

在显示任何对话框之前,onClientClick不能检查“已更改”状态吗?@Carth,我尝试过,但出现错误,按钮仍然执行。用onClientClick=ConfirmMsg替换当前的onClientClick语句不起作用?