【问题标题】:JSP: Confirm before submitJSP:提交前确认
【发布时间】:2019-10-15 12:38:20
【问题描述】:

我试图在提交表单数据之前显示一个确认对话框。我想要一个对话框弹出 ok 并在 ok 提交数据的地方取消,而取消什么也不做。事实证明,这比我想象的要棘手。

Web 应用程序是用 java 和 jsp 编写的。我使用“onclick =”尝试了以下操作,希望有一个简单的解决方案无济于事:

Java:ReceiveAction.java

        public Resolution receiveInventory() {
             ...
             return new ForwardResolution(ADJUSTMENT);
        }

jsp:receive-action.jsp

        <button name="_eventName" value="receiveInventory" type="submit" class="btn btn-green disabler-ignore-readonly" onclick="javascript:return confirm('are you sure?');">Receive</button>

问题是我可以使用上述代码显示确认对话框,但无论我点击确定还是取消都会触发接收库存。我需要它只在我点击确定时触发。我觉得我非常精通 java 和 jsp,但在 javascript 方面我还不是新手(我像瘟疫一样避免它),我认为这就是我需要完成的。任何帮助或指出正确的方向将不胜感激。

【问题讨论】:

  • 您的操作应该在&lt;form&gt; 提交事件中,而不是在按钮中。在这里查看这篇文章:stackoverflow.com/questions/6515502/…
  • 我尝试过这种方式,但遇到了同样的问题,无论我点击确定还是取消,都会提交表单数据。

标签: javascript java jsp submit confirm


【解决方案1】:

您的按钮是“提交”类型,因此它很可能在单击时触发表单的onSubmit 事件,无论您自己的单击处理程序如何。此外,confirm 返回一个布尔值,您可以使用它来判断他们是否选择了“确定”按钮。

function checkSubmission() {
    let confirmed = confirm("Are you sure?");

    if (confirmed) {
         // Submit your form....
         recieveInventory(); // document.getElementById('myFormId').submit();
    } else {
        // Handle cancel here if needed
    }
}

<button name="_eventName" value="receiveInventory" type="button" class="btn btn-green disabler-ignore-readonly" onclick="javascript:return checkSubmission();">Receive</button>

理想情况下,您可能应该将表单的submit 处理程序设置为调用checkSubmission。那么你根本不必在按钮上设置click 处理程序

【讨论】:

  • 我在想一些类似的事情。但是,我不确定如何从服务器上的 ReceiveAction.class 调用我的 receiveInventory() 方法。
  • 如果用户确认,您可以对您的服务器进行 API 调用,而不是在客户端调用 receiveInventory()。服务器使用您定义的 Java 类来处理请求,并将结果发送回客户端使用。
  • 如果您的表单已经正确地将您的请求提交给服务器(只需要等待确认),那么快速而肮脏的方法是将receiveInventory();更改为document.getElementById('myFormId').submit();,其中'myFormId'是id 你给你提交的表格
猜你喜欢
  • 2011-09-21
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多