javascript - 提交表单并更新父页面后关闭 javascript 弹出窗口吗?

标签 javascript html node.js express

我有一个来自index.ejs的弹出窗口,名为math.ejs。按“提交确定”按钮后,我希望关闭 math.ejs 弹出窗口并在 index.ejs 上显示计算值。但现在,当我按下提交按钮时,弹出窗口会转到 index.ejs 并在那里更新;它不关闭。它不会在正常的index.ejs浏览器页面上更新它。我必须刷新该页面才能更新。

这是我在代码中尝试过的:

<form class="" action="/index" method="post" name="mathform">
      <p>Value: <%= myValue %></p>
      <button class="btn btn-md" name="button" value="confirm" onclick="CloseAndRefresh();">Ok</button>
</form>

<script language="javascript">
      function CloseAndRefresh() {
      opener.location.reload(true);
      setTimeout(function() {
      window.close();
      }, 3000);
     }
</script>

我确信这会起作用,因为它告诉父窗口重新加载,我什至在弹出窗口关闭之前设置了一个计时器。感谢您的帮助!

最佳答案

这里有一些可以帮助您入门的内容。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

<form class="" action="/index" method="post" name="mathform" onsubmit="submitForm(event)">
      <p>Value: <%= myValue %></p>
      <button class="btn btn-md" name="button" value="confirm">Ok</button>
</form>

<script language="javascript">
    function submitForm(e) {
        e.preventDefault(); // Prevents the form from getting submitted and navigating to /index

        $.post("/index",{
            // add your post field values here
            field1: "value1",
            field2: "value2",   
        })
            .done(function(data){ // ajax request completed successfully
                CloseAndRefresh();
            })
            .fail(function(error) { // ajax request failed
                // TODO: handle error accordingly
                CloseAndRefresh();
            });
    }

    function CloseAndRefresh() {
        opener.location.reload(true);
        // this timeout can be removed since the page refresh has already started at this point
        setTimeout(function() {
            window.close();
        }, 3000);
    }
</script>

使用 jQuery,Ajax 请求通常更容易。我在上面的代码中包含了该库,但理想情况下您应该将其添加到 <head> 中。在这里我使用$.post函数( documentation )

关于javascript - 提交表单并更新父页面后关闭 javascript 弹出窗口吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58245689/

相关文章:

javascript - 如何排序和显示目录中的 HTML 文件及其链接

javascript - 选择下拉选项重定向点击按钮

javascript - 对于小于 1 的值 Math.acosh() 返回 NaN

javascript - ExtJS 4 : How do I Re-render Ext. 组件 iframe?

javascript - 无法用 JS 理解这个 DOM 目标

javascript - 如何从 ui 网格中的特定列中删除排序?

javascript - 有没有一种简单的方法可以增加Map对象的值?

html - 简单的 CSS 定位

javascript - 如何使用 excel 中的列进行解析以将其转换为 JSON

node.js - Azure 中的 React 和 AppSettings