
¿Que hay mal en esta comprobación?
Publicado por Javier Pardo (5 intervenciones) el 14/06/2011 10:52:54
Hola a todos. La verdad es que ya estoy un poco desesperado con este problema al cual no encuentro solucion por mucho que leo en foros y páginas de internet.
Espero podais echarme una mano, os lo ruego...
Tengo un formulario el cual ademas de otros elementos tiene 2 radio buttons con los valores de Si y No respectivamente.
Se trata de que si el usuario elige el radio button con valor SI, debe necesariamente rellenar otro campo llamado en este caso codigochip para que le permita enviar el formulario. Y si el usuario elige NO en el radiobutto el campo codigochip deja de ser necesario.
Este es el codigo que tengo ahora mismo en mi formulario:
//Como aclaracion decir que el formulario se llama registro y que los radiobutton se llaman chip
//Esta es la funcion de validacion de formulario que comprueba si todos los campos obligatorios estan cumplimentados (es una funcion que hace Dreamweaver automaticamente la cual intento modificar para que me compruebe que radio button esta seleccionado y si ha cumplimentado el campo de codigochip
function MM_validateForm() {
for(i=0;i<document.registro.chip.length;i++)
if(document.registro.chip[i].checked) return document.registro.chip[i].value;
if(document.registro.chip.value="SI")
{
if(document.registro.codigochip.value==""){
alert("Debe introducir el codigo de su chip")
document.registro.codigochip.focus()
return 0;
}
}
else{
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(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+' debe ser una dirección de email VALIDA.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' debe ser solo números.\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+' está vacio.\n'; }
} if (errors) alert('Atención, hay campos del formulario OBLIGATORIOS sin rellenar o su formato es incorrecto:\n'+errors);
document.MM_returnValue = (errors == '');
}
}
}
//Por otro lado el botón de enviar tiene el siguiente código implementado
<input name="enviar" type="submit" id="enviar" onclick="MM_validateForm('precioinscripcion','','R','dni','','RisNum','fecha','','R','nombre','','R','apellidos','','R','direccion','','R','codigopostal','','RisNum','localidad','','R','provincia','','R','telefono','','NisNum','movil','','RisNum','email','','RisEmail');return document.MM_returnValue"/>
Con este codigo como esta ahora, se salta la comprobacion de si el radiobutton SI esta seleccionado y pasa directamente a la comprobacion del resto de campos....
Es como si no entendiera la funcion:
if(document.registro.chip.value="SI")
{
if(document.registro.codigochip.value==""){
alert("Debe introducir el codigo de su chip")
document.registro.codigochip.focus()
return 0;
}
Por favor, necesito algo de orientacion para resolver el problema.
Muchas gracias de antemano.
Espero podais echarme una mano, os lo ruego...
Tengo un formulario el cual ademas de otros elementos tiene 2 radio buttons con los valores de Si y No respectivamente.
Se trata de que si el usuario elige el radio button con valor SI, debe necesariamente rellenar otro campo llamado en este caso codigochip para que le permita enviar el formulario. Y si el usuario elige NO en el radiobutto el campo codigochip deja de ser necesario.
Este es el codigo que tengo ahora mismo en mi formulario:
//Como aclaracion decir que el formulario se llama registro y que los radiobutton se llaman chip
//Esta es la funcion de validacion de formulario que comprueba si todos los campos obligatorios estan cumplimentados (es una funcion que hace Dreamweaver automaticamente la cual intento modificar para que me compruebe que radio button esta seleccionado y si ha cumplimentado el campo de codigochip
function MM_validateForm() {
for(i=0;i<document.registro.chip.length;i++)
if(document.registro.chip[i].checked) return document.registro.chip[i].value;
if(document.registro.chip.value="SI")
{
if(document.registro.codigochip.value==""){
alert("Debe introducir el codigo de su chip")
document.registro.codigochip.focus()
return 0;
}
}
else{
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(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+' debe ser una dirección de email VALIDA.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' debe ser solo números.\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+' está vacio.\n'; }
} if (errors) alert('Atención, hay campos del formulario OBLIGATORIOS sin rellenar o su formato es incorrecto:\n'+errors);
document.MM_returnValue = (errors == '');
}
}
}
//Por otro lado el botón de enviar tiene el siguiente código implementado
<input name="enviar" type="submit" id="enviar" onclick="MM_validateForm('precioinscripcion','','R','dni','','RisNum','fecha','','R','nombre','','R','apellidos','','R','direccion','','R','codigopostal','','RisNum','localidad','','R','provincia','','R','telefono','','NisNum','movil','','RisNum','email','','RisEmail');return document.MM_returnValue"/>
Con este codigo como esta ahora, se salta la comprobacion de si el radiobutton SI esta seleccionado y pasa directamente a la comprobacion del resto de campos....
Es como si no entendiera la funcion:
if(document.registro.chip.value="SI")
{
if(document.registro.codigochip.value==""){
alert("Debe introducir el codigo de su chip")
document.registro.codigochip.focus()
return 0;
}
Por favor, necesito algo de orientacion para resolver el problema.
Muchas gracias de antemano.
Valora esta pregunta


0