html (javascript?) всегда открывать новую вкладку при нажатии кнопки формы

У меня есть html форма с полем select, в котором пользователь выбирает таблицу из базы mySql, которую ему покажут.

<form action = "tableOutput.php" method="post" name="frmTableSelect" target="_blank"> 
    <p>Выберите таблицу из списка</p>
    <select name="tableName" autofocus>
<!-- здесь загрузка списка таблиц из mySql. для упрощения, пусть так: -->
        <option>table 1</option>
    <option>table 2</option>
     <p><br><input name="submit" type="submit" value="показать таблицу"></p>
 </form>

Когда нажимаешь кнопку, открывается новая вкладка с таблицей (обрабатываю в файле "tableOutput.php").

Но если вернуться обратно к форме и выбрать в select другую (или ту же таблицу), то новый результат открывается в той же вкладке, что предыдущий, т.е. заменяет его собой.

Мне необходимо сделать так, чтобы каждое нажатие кнопки всегда открывало новую вкладку.

Я вставила javascript:

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

Так ничего не изменилось.

Если сделать:

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

новая вкладка открывается при каждом нажатии, но так не работает Post метод и код в "tableOutput.php" даёт ошибки.


Ответы (2 шт):

Автор решения: Александр Сычёв

Я так понимаю, вы получаете данный таким способом

$label = $_POST["tableName"];

По идее у вас в форме есть target="_blank", поэтому при клике на кнопку должно открываться каждый раз в новом окне.

Можно отменить браузерное событие при клике на кнопку отправку формы, и сделать это на javascript

Для этого добавить id

<form id="form" action = "test.php" method="post" name="frmTableSelect" target="_blank">

И сам код обработки

document.getElementById('form').addEventListener('submit', function (e) {
e.preventDefault()
console.log(1)
    })
→ Ссылка
Автор решения: Masha Levina

Мне ответили на англоязычном форуме. Вот этот код делает то, что мне нужно:

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

Я не вполне его понимаю, честно говоря, пойду читать документацию. Ура.

→ Ссылка