Estoy tratando de establecer condicionalmente el valor de un atributo de acción de formulario dependiendo de si una casilla de verificación está marcada o no.
Tengo el siguiente código Javascript:
function validate() { var f = document.getElementById("confirmForm"); f.setAttribute('method',"post"); if (document.getElementById('confirmOptionCompare').checked) { f.setAttribute('action',"comparison.php"); } else { { f.setAttribute('action',"bookConfirm.php"); } } } return true; }Incluyo lo anterior en mi documento HTML de la siguiente manera:
<script type="text/javascript" src="code/scripts.js"></script>Estoy tratando de activarlo de la siguiente manera, pero no navega a la página a la que necesito que navegue:
<form id="confirmForm" onsubmit="return validate()"> <p>Click confirm to go to the next step:</p> <button type="submit" name="confirm">Confirm</button> </form>La casilla de verificación que debería activar el if está redactada de la siguiente manera (en una tabla):
<tr> <td><?php echo $bookingOutput['name']." ".$bookingOutput['surname'];?></td> <td><?php echo $bookingOutput['email']; ?></td> <td><?php echo $bookingOutput['checkIn']." -> ".$bookingOutput['checkOut'];?></td> <td><?php echo $bookingOutput['daysStaying']; ?></td> <td><?php echo $bookingOutput['hotel'];?></td> <td><?php echo "R".$dailyRate ?></td> <td><?php echo $confirmationObj->ratePerDay; ?></td> <td><input type="checkbox" name="confirmOptionCompare" id="confirmOptionCompare"/> </td> </tr>La casilla de verificación es la última opción anterior.
No estoy seguro de lo que estoy haciendo mal aquí. Cualquier ayuda sería muy apreciada.
Su código debería funcionar
En cualquier caso, aquí hay una versión más simple.
document.getElementById("confirmForm").addEventListener("submit",function() { this.method="post" this.action = document.getElementById('confirmOptionCompare').checked ? "comparison.php": "bookConfirm.php"; }) <form id="confirmForm"> <p>Click confirm to go to the next step:</p> <button type="submit" name="confirm">Confirm</button> </form> <input type="checkbox" name="confirmOptionCompare" id="confirmOptionCompare"/>Dicho esto, puede enviar y hacer una redirección simplemente configurando el encabezado en el PHP
if (isset($_POST["confirmOptionCompare"])) header("location: comparison.php"); die();