Ver Mensaje Individual
  #8 (permalink)  
Antiguo 16/10/2008, 05:09
Casiopea3_14
 
Fecha de Ingreso: mayo-2004
Mensajes: 50
Antigüedad: 20 años
Puntos: 1
Respuesta: validar formulario

Muchas gracias por vuestras aportaciones.
Sí, me he basado en lo que me ha propuesto The_Web_Saint
La verdad es que no sé si lo que tú has aportado funciona matak. Algo parecido intenté hacer yo ayer y no me funcionó. También intenté poner dos instrucciones javascript, pero no me funcionó.
Lo que he hecho ha sido ésto:

<input type="submit" value="Graba Paciente" name="btn_aceptar" id="btn_aceptar" onClick="return validar('insertar');">
<input type="submit" value="Modifica Paciente" name="btn_modificar" id="btn_modificar" onClick="return validar('modificar');">
<input type="submit" value="Elimina Paciente" name="btn_eliminar" id="btn_eliminar" onClick="return validar('eliminar');">

y validar recibe esos parámetros "insertar", "modificar" y "eliminar" y mi función javascript es la siguiente:


//función que valida el formulario
function validar(boton)
{
//Se devuelve una variable a true o false dependiendo de si se ha validado o no. Ésto se hace para que no se recargue la página si no se valida gracias a que
//ponemos un return en el onClick, de tal manera que si el onClick recibe false, no se hace el onClick y no se recarga la página.
var validado = true;
//según sea el botón que se ha pulsado
switch (boton)
{
// Si se ha pulsado eliminar
case "eliminar":
//no hay nada que validar, establecemos el action del formulario para que se dirija al controlador de la eliminación y ejecutamos el submit
document.frmPersonaAdd.action="./control/pacienteEliminaControl.asp";
document.frmPersonaAdd.submit();
break;
// si se ha pulsado insertar o modificar, entonces hay que validar que como mínimo tenga el nombre y el primer apellido del paciente
default:
// si el primer nombre no está relleno
if (document.frmPersonaAdd.nombre1.value == "")
{
// se muestra el mensaje de advertencia
alert("Debe especificar el nombre del paciente");
// se pone la variable validado a false indicando que no se ha validado el formulario
validado = false;
}
else
// si el primer nombre sí está relleno pero el apellido no
if (document.frmPersonaAdd.ape1.value == "")
{
// se muestra el mensaje de advertencia
alert("Debe especificar el primer apellido del paciente");
// se pone la variable validado a false indicando que no se ha validado el formulario
validado = false;
}
//Si se consigue validar el formulario tenemos que preguntar por los dos posibles botones que se hayan pulsado
else
{
//Si se ha pulsado insertar
if (boton == "insertar")
{
//establecemos el action del formulario para que se dirija al controlador de la insercción
document.frmPersonaAdd.action="./control/pacienteInsertaControl.asp";
}
// si se ha pulsado modificar
else
//establecemos el action del formulario para que se dirija al controlador de la insercción
{
document.frmPersonaAdd.action="./control/pacienteModificaControl.asp";
}
// y ejecutamos el submit
document.frmPersonaAdd.submit();
}
break;
}
return validado;
}

Así pues, me he basado íntegramente en lo que dijo nuestro compañero The_Web_Saint y funciona perfectamente. Si bien no es la solución exacta que buscaba, pero es la única que he encontrado y es bastante buena, la verdad.
En definitiva, en la función validar hago las validaciones dependiendo del botón pulsado (que lo pasamos como parámetro) y una vez validado, establezco el valor del action y ejecuto el formulario con la instrucción formulario.submit();

Muchas gracias a todos por vuestra ayuda y enhorabuena por vuestros conocimientos.

Saludos.