html、javascript - 每次使用 Post 方法提交表单时打开一个新选项卡

html, javascript - open a new tab every time a form gets submitted using Post method

我有一个带有 select 字段的 html 表单,其中用户 selects table 我们将显示 mySql 数据库中的 him/her。

<form action = "tableOutput.php" method="post" name="frmTableSelect" target="_blank"> 
        <p>Select a table from the list</p>
        <select name="tableName" autofocus>
    <!-- here I load a list of tables from mySql. for simplicity let it be: -->
            <option>table 1</option>
        <option>table 2</option>
         <p><br><input name="submit" type="submit" id="knopka" value="show table"></p>
     </form>

像这样,当用户点击按钮时,将打开一个新选项卡,其中打印 selected table(我在“tableOutput.php”中处理它)- 这是很好。

但用户需要 return 第一个表格和 select 另一个 table,应该打印在 另一个 选项卡中,而它与第一个 replacing 打印在同一个选项卡中。 换句话说,我们需要能够打开许多带有输出的新选项卡。

我插入了这个javascript:

    <script>
      knopka.onclick = function() { 
        window.open("tableOutput.php")
      };
    </script>

现在每次点击按钮都会打开一个选项卡,但是“tableOutput.php”中的 POST 方法不再起作用,因此我们在处理查询时出错。

如果我写

<script>
  knopka.submit = function() {   
    alert('inside javascript'); 
    window.open("tableOutput.php")
  };
</script>

没有任何反应,甚至 alert 也没有执行。

请帮忙。

将 .submit 更改为 .onclick:

document.getElementById('knopka').onclick = function() { 警报('inside javascript'); window.open("tableOutput.php") };

我很惊讶 _blank 重复使用同一个新标签

你不能使用 window.open 到 post 到新的 window/tab 没有很多代码。

试试这个:

let cnt = 0;
document.querySelector("[name=frmTableSelect]").addEventListener("submit", function() {
  this.target=`win${cnt++}`;
})