Hola:
Ya dispongo de una funcion que me valida los campos si están o no rellenos y con diferentes condiciones,
pero me los valida todos, estén o no activos.
A ver si me explico mejor:
Usuario rellena formulario con dos opciones iniciales en un select:
a.- SOCIO
- Este
activa campo "número socio", de obligado cumplimiento.
b.- NO SOCIO
- Este
mantiene desactivado campo número socio, ahora no es de obligado cumplimiento.
Código PHP:
Ver original<select name="curso" size="1" id="curso" onChange="if(this.options[1].selected) {document.getElementById('numerosocio').disabled=false}
else if(this.options[2].selected) {document.getElementById('socio').disabled=true}">
<option selected value="" disabled/>Seleccione</option>
<option value="SOCIO">SOCIOS</option>
<option value="NO SOCIOS">NO SOCIOS</option>
</select>
<td class="texto">Nº Socio<br>
<input name="socio" type="text" id="socio" size="10" disabled/></td>
Envía formulario (submit) y
una funcion revisa campos:
Código Javascript
:
Ver originalfunction MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_validateForm() { //v4.0
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+' contiene una dirección email incorrecta.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- El campo '+nm+' debe ser numérico.\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 += '- Debe rellenar obligatoriamente el campo '+nm+'.\n'; }
}
if (inscripciones.curso.value == "")
{
errors+= '- Debe seleccionar un curso disponible\n';
}
if (inscripciones.email.value!=inscripciones.email2 .value)
{
errors+= '- Las direcciones e-mail no coinciden\n';
}
if (inscripciones.centrotr.value == "")
{
errors+= '- Debe rellenar obligatoriamente un centro de trabajo\n';
}
if (inscripciones.provincia2.value == "")
{
errors+= '- Debe seleccionar una provincia de trabajo\n';
}
if (inscripciones.profesion.value == "")
{
errors+= '- Debe seleccionar obligatoriamente a profesión\n';
}
if (errors) alert('El fomulario contiene los siguientes errores:\n'+errors);
document.MM_returnValue = (errors == '');
}
Si a est función le incluyo que revise el campo "numero socio" lo hace bien, pero tanto si está activo como si no.
Lo que quiero es que lo revise
sólo en el caso de que esté activo