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)
})
Мне ответили на англоязычном форуме. Вот этот код делает то, что мне нужно:
let cnt = 0;
document.querySelector("[name=frmTableSelect]").addEventListener("submit", function() {
this.target=`win${cnt++}`;
})
Я не вполне его понимаю, честно говоря, пойду читать документацию. Ура.