es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Explicación de la solución

    Para lograr la funcionalidad deseada, debemos modificar el código existente en dos partes:

    1. Modificar el formulario HTML para llamar a la función Javascript al enviar
      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:
    <form onsubmit="return setAction(this)" method="post">
      <td>
        <button onclick="askConfirm()" type="submit" name="deleteItem" value="<?php echo $line['productCode']; ?>">Eliminar</button>
      </td>
    </form>
    
    1. Implementar la función setAction() en Javascript
      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():
    function setAction(form) {
      if (confirm("¿Está seguro de que desea eliminar esto?")) {
        form.action = "delete.php";
        return true;
      } else {
        return false;
      }
    }
    

    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.

Comments are closed.