Tengo un formulario html con un campo de selección donde el usuario selecciona qué tabla le mostraremos de la base de datos mySql .
<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>De esta manera, cuando el usuario presiona el botón, se abre una nueva pestaña donde se imprime la tabla seleccionada (la proceso en "tableOutput.php"); está bien.
Pero el usuario debe volver al primer formulario y seleccionar otra tabla, que debe imprimirse en otra pestaña, mientras que se imprime en la misma pestaña que la primera que la reemplaza . En otras palabras, necesitamos poder abrir muchas pestañas nuevas con salida.
Inserté este javascript:
<script> knopka.onclick = function() { window.open("tableOutput.php") }; </script>Ahora se abre una pestaña cada vez que se presiona el botón, pero el método POST en "tableOutput.php" ya no funciona, por lo que recibimos un error al procesar la consulta.
si escribo
<script> knopka.submit = function() { alert('inside javascript'); window.open("tableOutput.php") }; </script>no pasa nada, incluso la alerta no se ejecuta.
Por favor ayuda.
Me sorprende que _blank reutilice la misma pestaña nueva
No puede usar window.open para publicar en una nueva ventana/pestaña sin mucho código.
Prueba esto:
let cnt = 0; document.querySelector("[name=frmTableSelect]").addEventListener("submit", function() { this.target=`win${cnt++}`; })Cambie .submit a .onclick:
document.getElementById('knopka').onclick = function() { alert('inside javascript'); ventana.abrir("salidatabla.php") };