You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中Sweet Alert弹窗闪显且点击确认后未跳转问题排查

问题分析与解决方案

这个问题我太熟悉了!核心原因是你的按钮是type="submit",点击后会触发表单的默认提交行为,直接刷新页面——这就导致SweetAlert弹窗刚弹出来就被页面刷新冲没了,自然等不到你点击确定就执行不了跳转逻辑。

下面是两种针对性的解决办法,你可以根据自己的需求选一种:

方法1:修改按钮类型为非提交按钮

直接把按钮的type从submit改成button,这样点击按钮就只会触发你的ApprovePayment()函数,不会触发表单提交:

<div class="col"> 
  <button type="button" class="btn btn-primary form-control" onclick="ApprovePayment()">Create</button> 
</div>

你的JavaScript代码可以保持不变,不过可以优化下变量声明(用const/let代替var,更符合现代JS规范):

function ApprovePayment() {
  const val = document.getElementById("PaymentHistory_SentFromAddressId");
  const selectedText = val.options[val.selectedIndex].text;
  const amount = document.getElementById("PaymentHistory_Amount");
  const value = parseFloat(amount.value);
  const max = parseFloat(amount.getAttribute("data-val-range-max"));
  const min = parseFloat(amount.getAttribute("data-val-range-min"));

  if (!(value < min || value > max)) {
    if (selectedText.includes("- Paypal")) {
      window.alert("in paypal")
    } else {
      swal("Success!", "Payment Added To Your List, Admin will Approve once Payment Received!", "success")
        .then((confirmed) => {
          // 确保用户点击确定后再跳转
          if (confirmed) {
            window.location.href = '/UserRole/PaymentHistory';
          }
        });
    }
  }
}

方法2:在函数中阻止表单默认提交行为

如果需要保留按钮的submit类型(比如还要用到表单的默认校验),可以在函数里接收事件参数,手动阻止默认提交行为:

function ApprovePayment(event) {
  // 关键:阻止表单的默认提交刷新行为
  event.preventDefault();
  
  const val = document.getElementById("PaymentHistory_SentFromAddressId");
  const selectedText = val.options[val.selectedIndex].text;
  const amount = document.getElementById("PaymentHistory_Amount");
  const value = parseFloat(amount.value);
  const max = parseFloat(amount.getAttribute("data-val-range-max"));
  const min = parseFloat(amount.getAttribute("data-val-range-min"));

  if (!(value < min || value > max)) {
    if (selectedText.includes("- Paypal")) {
      window.alert("in paypal")
    } else {
      swal("Success!", "Payment Added To Your List, Admin will Approve once Payment Received!", "success")
        .then((confirmed) => {
          if (confirmed) {
            window.location.href = '/UserRole/PaymentHistory';
          }
        });
    }
  }
}

注意:如果之后需要手动提交表单(比如校验通过后要提交数据),可以在合适的位置添加document.querySelector('form').submit();来触发提交。

内容的提问来源于stack exchange,提问作者Kobi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 18:32:50