Foros del Web » Programando para Internet » Javascript »

Dos funciones on submit

Estas en el tema de Dos funciones on submit en el foro de Javascript en Foros del Web. Hola He estado creando un formulario con dos validaciones, una de los campos obligatorios a rellenar y la otra una casilla de aceptación de las ...
  #1 (permalink)  
Antiguo 03/11/2010, 12:23
 
Fecha de Ingreso: octubre-2010
Mensajes: 5
Antigüedad: 11 años, 9 meses
Puntos: 0
Dos funciones on submit

Hola
He estado creando un formulario con dos validaciones, una de los campos obligatorios a rellenar y la otra una casilla de aceptación de las normas. Pero no consigo que funcionen las dos, me ignora una de ellas aunque si me lanza el mensaje de alerta (la de DoTheCheck).
Os agradecería una ayudita
Gracias
Os dejo el código




<script type="text/javascript">
function MM_validateForm() { //v4.0
if (document.getElementById){
var i,p,q,nm,test,num,min,max,errors='',args=MM_valida teForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
} if (errors) alert('The following error(s) occurred:\n'+errors);
document.MM_returnValue = (errors == '');
} }

function DoTheCheck(x) {
var x=document.econieve.normas.checked
if(x == false)
{
document.econieve.normas.focus()
alert('DEBES ACEPTAR LAS NORMAS DEL CLUB')
return false
}
}


</script>
<style type="text/css">
body {
background-image: url(fondo-formulario3.jpg);
}
</style>
</head>

<body>


<form action="formulario.php" method="post" name="eco" id="eco" onsubmit="MM_validateForm('Nombre','','R','Apellid os','','R','DNI-NIF','','R','tele1','','R','sms','','R','Email','' ,'R','Direcci&oacute;n','','R','Poblaci&oacute;n', '','R','cp','','R','Alergias','','R','enf','','R') ;return document.MM_returnValue" >
  #2 (permalink)  
Antiguo 03/11/2010, 13:25
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 12 años, 2 meses
Puntos: 310
Respuesta: Dos funciones on submit

Después de un return no se sigue ejecutando el código, la solución es usar un único return pero uniendo los dos valores. Es decir return a&&b, así si alguno de los dos es false devolverá false. La función doTheCheck podría optimizarse así:
Código Javascript:
Ver original
  1. function DoTheCheck(x) {
  2.  x?void(0):alert('DEBES ACEPTAR LAS NORMAS DEL CLUB');
  3.  return x;
  4.  /*
  5.   No sirve de mucho darle el foco a un checkbox
  6.   a no ser que el formulario sea muy largo,
  7.   al menos en mi opinión.
  8.  */
  9. }
Código HTML:
Ver original
  1. <form action="formulario.php" method="post" name="eco" id="eco" onsubmit="return MM_validateForm('Nombre','','R','Apellid os','','R','DNI-NIF','','R','tele1','','R','sms','','R','Email','' ,'R','Direcci&oacute;n','','R','Poblaci&oacute;n', '','R','cp','','R','Alergias','','R','enf','','R')&&DoTheCheck(this.elements['normas'].checked);" >
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #3 (permalink)  
Antiguo 03/11/2010, 16:14
 
Fecha de Ingreso: octubre-2010
Mensajes: 5
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Dos funciones on submit

No me funciona, me dice que los campos de texto no están rellenados y luego se envia vacio.
Gracias de todos modos por tu atención
  #4 (permalink)  
Antiguo 03/11/2010, 16:33
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 12 años, 2 meses
Puntos: 310
Respuesta: Dos funciones on submit

Ok esque pensé que la función MM_... tenía un return. Entonces prueba cambiando toda la función del return por document.MM_returnValue.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red

Etiquetas: dos, funciones, submit
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:55.