2012-08-17 60 views
0

我有一个jQuery函数设置一个隐藏的字段值时,对可编辑的GridView中的文本框进行更改。表单上有两个按钮;一个保存更改,另一个使用新值执行不同的过程。如果先按下第二个按钮,我想要出现确认信息,告诉用户未保存更改。点击“是”将保存更改并运行该按钮的过程。点击“否”不做任何事。我无法使用“return confirm('')”,因为即使没有检测到更改,它也会始终显示确认。只有当隐藏字段有值时才会显示确认(在这种情况下,“已更改”)。我尝试了各种解决方案,但获取有关不存在的函数或其他空对象的错误。只有条件为真时,才向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.net按钮应该显示一个确认,如果隐藏字段的值:

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

Couldn”在显示任何对话之前,您的onClientClick是否检查“已更改”状态? – Carth 2012-08-17 04:02:45

+0

@Carth,我试过了,但出现错误,按钮仍然执行。 – 2012-08-17 13:39:40

回答

0

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

FYI - 开始使用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

-1

以下工作:

<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; 
    } 
+0

用onClientClick = ConfirmMsg替换当前onClientClick语句不起作用? – Carth 2012-08-17 15:34:26