El uso de HTML y JavaScript para permitir si se activa o no una acción de formulario no está funcionando (reflejado en PHP).
Inicialmente tenía un código escrito en PHP / HTML que cuando se hacía clic en un botón, la acción del formulario llevaba al usuario a la página PHP llamada delete.php.
Ahora quiero agregar una función en javascript que le pregunte al usuario si está seguro de querer llevar a cabo la acción una vez que haga clic en el botón, pero no estoy seguro de cómo evitar que el formulario de PHP envíe la acción del formulario si el usuario elige cancelar.
Este es el código:
# botones de eliminación
código anterior: <form action='delete.php' method='post'>
echo "<form onsubmit='return setAction(this)' method='post'>";
echo "<td> <button onclick='askConfirm()' type='submit' name='deleteItem' value='" . $line['productCode'] . "' />Eliminar</button></td>";
echo "</form>";
# finalizar fila y bucle
echo "</tr>";
# javascript
echo '<script type="text/javascript">
function setAction(){
if (confirm("¿Estás seguro de que quieres eliminar esto?") == true) {
form.action = "delete.php";
}
else {
return false;
}
}
</script>';
Espero que esta información sea de ayuda.
davy.ai
Explicación de la solución
Para lograr la funcionalidad deseada, debemos modificar el código existente en dos partes:
El formulario existente debe ser modificado para agregar un atributo onsubmit que llame a la función setAction() cuando se envíe el formulario. Así es como debe verse el nuevo código del formulario:
La función setAction() debe ser implementada en Javascript para manejar la confirmación del usuario y evitar el envío del formulario si el usuario cancela. Aquí está el código de la función setAction():
La función recibe el formulario como parámetro y verifica si el usuario confirma la acción. Si el usuario confirma, la función establece la acción del formulario como delete.php y devuelve true, permitiendo que se envíe el formulario. Si el usuario cancela, la función devuelve false, evitando el envío del formulario.
Al implementar estos cambios, el formulario ahora solicitará confirmación al usuario antes de enviarlo a la página delete.php, y solo lo enviará si el usuario confirma.