【问题标题】:javascript confirm asp.net button never submits?javascript确认asp.net按钮从不提交?
【发布时间】:2010-09-16 20:29:16
【问题描述】:

我有一个常规的 asp:button。我在.Net 3.5 中工作。我尝试使用 OnClientClick 属性向按钮添加 js 确认以及添加代码隐藏,结果是相同的。无论用户在确认弹窗中点击什么,表单都不会提交??

BtnDeleteSelected.Attributes.Add("onclick", "return confirm('你确定要删除吗?');");

出现确认对话框,如果我选择“确定”,它仍然没有提交。有什么想法吗?谢谢。

【问题讨论】:

    标签: javascript asp.net form-submit


    【解决方案1】:

    那是因为您不应该在所有情况下都返回。如果您查看页面的源代码并查找按钮标记,您很可能会看到这个...

    onclick="return confirm('Ok?'); __doPostback();"
    

    在某些情况下,ASP.NET 框架会自动插入 __doPostback 调用。由于无论confirm 的结果如何,您都会立即返回,因此回发永远不会触发。最终的解决方案是不设置 onclick 属性,而是使用unobtrusive approach。但是,如果有迫切的理由通过 onclick 在服务器端进行控制,您可以使用简单的if 语句,并且仅在他们按下“取消”时返回...

    string js = "if(!confirm('Are you sure you want to delete?')) return false;";
    BtnDeleteSelected.Attributes.Add("onclick", js);
    

    【讨论】:

    • 非常感谢!完全有道理。唯一迫切的需要可能是坏习惯和懒惰……我知道我应该克服的东西!再次感谢。
    【解决方案2】:

    我也有这个问题。我正在使用在数据网格的OnItemCreated 代码中添加客户端javascript,如下所示:

     myTableCell = e.Item.Cells(iDeleteColumnNumber) 'Delete Button Column
     myDeleteButton = myTableCell.Controls(1)
    
     If myDeleteButton.UniqueID = "lbtnDelete" Then
        myDeleteButton.Attributes.Add("onclick", "if(!confirm('OK to Delete?'))return false;")
     End If
    

    由于某种原因,它不起作用。然后,我在设计视图中将 JavaScript 移至 <asp:linkbutton>,如下所示:

       <asp:LinkButton id="lbtnDelete" runat="server" CssClass="link-text" Text="<img border=0 src=../images/icons/icon-delete.gif alt=Delete>"
     CommandName="Delete" CausesValidation="false" OnClientClick="if(!confirm('OK to Delete?'))return false;"></asp:LinkButton>
    

    这对我有用。

    【讨论】:

      【解决方案3】:

      如果验证通过,是否必须返回 TRUE?意思是,如果 confirm() 返回 false,我认为表单不会提交。

      【讨论】:

      • 据我了解,以上就是所有需要的......点击确定返回true
      【解决方案4】:

      您的代码表面上看起来不错。您是否有任何可能阻止其提交的验证器?尝试添加 BtnDeleteSelected.CausesValidation = false 以防止删除按钮调用任何客户端验证器。

      【讨论】:

      • 我添加了 BtnDeleteSelected.CausesValidation = false 认为同样的事情..没有骰子..页面上没有其他验证。
      • 虽然我正在使用 radgrid 并在其中确认.. 可能是问题.. 但没有 js 错误。
      【解决方案5】:

      请尝试调用doPostBack函数;)

      我的意思是:

      BtnDeleteSelected.Attributes.Add("onclick", "CheckConfirm();");
      
      <script language="javascript">
      function CheckConfirm()
      {
          if ( confirm('Are you sure you want to delete?') )
              __doPostBack('BtnDeleteSelected','');
          else
              return false;
      
          return true;
      }
      </script>
      

      希望对你有帮助,

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-28
        • 1970-01-01
        • 1970-01-01
        • 2012-05-26
        • 1970-01-01
        • 2016-03-14
        • 1970-01-01
        相关资源
        最近更新 更多