【问题标题】:JavaScript confirm Okay button not calling server side methodJavaScript 确认确定按钮未调用服务器端方法
【发布时间】:2020-08-24 17:19:06
【问题描述】:

确认正常按钮不起作用,它没有调用服务器端方法。

按钮被禁用,但未调用服务器端函数。

如果我从确认方法中删除以下两行,那么它工作正常;

      document.getElementById('btnSubmit').disabled = true;
      document.getElementById('btnCancel').disabled = true;

代码

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>

<script language="javascript">

    function confirmPayment() {

        var isOkay = confirm("Confirm Payment?");

        if (isOkay) {
            document.getElementById('btnSubmit').disabled = true;
            document.getElementById('btnCancel').disabled = true;
         
            return isOkay;
        } else {
            return isOkay;
        }
    }

</script>
</head>
<body>
<form id="form1" runat="server">
<div>
    <asp:Button ID="btnSubmit" runat="server"  Width="110px" OnClientClick="return confirmPayment();" 
                Text="Submit Payment" ></asp:Button>
    <asp:Button ID="btnCancel" runat="server"  Width="110px"
                Text="Cancel" CausesValidation="False"></asp:Button>
</div>
</form>

</body>

有什么想法吗?

【问题讨论】:

  • 没有.attr() 方法。您将 jQuery API 与 DOM API 混淆了。
  • 对不起,我输入了错误的代码。我已经更新了我的问题
  • 您是否检查过浏览器控制台是否有其他错误? ASP 不会为你创建奇怪的元素 ID 吗?
  • 如果您在控制台中输入document.getElementById('btnSubmit') 会发生什么?参考上面的尖尖评论
  • 在您的OnClientClick 中出现retuen 的拼写错误,请将其更改为return

标签: javascript asp.net webforms


【解决方案1】:

您没有在 btnSubmit 上设置服务器端方法。没有onClick 只有onClientClick

【讨论】:

    【解决方案2】:

    我建议您设置控件 ClientIDMode="Static" 以防万一。

    如果你不这样做,那么你应该采用这种格式:

    var btn = document.getElementById('<%=Button1.ClientID%>');
    

    或者在你的情况下:

    document.getElementById('<%=btnSubmit.ClientID%>).disabled = true;
    

    【讨论】:

      【解决方案3】:

      设置超时 0 已经成功了。

      函数confirmPayment() {

                  var isOkay = confirm("Confirm Payment?");
      
                  if (isOkay) {
                      setTimeout(function () {
                          document.getElementById('btnSubmit').innerText = 'Processing...';
                          document.getElementById('btnSubmit').disabled = true;
                          document.getElementById('btnCancel').disabled = true;
                      }, 0);
               
                      return isOkay;
                  } else {
                      //event.preventDefault();
                      return isOkay;
                  }
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-20
        • 1970-01-01
        • 2013-10-07
        • 1970-01-01
        • 2015-01-16
        • 2011-08-23
        相关资源
        最近更新 更多