ciao raga, per moivi particolari ho una serie di form (con nome diverso), ma con campi con nomi uguali nella stessa pagina, per convalidare i campi ho preso il js che genera dreamwever e l'ho leggermente modicato. Il problema è che non capisce che deve controllare un campo specifico nel form specifico, cioè se ho due form con un campo di testo "numero" che deve essere obbligatorio ed avere un numero se cerco di convalidare il secondo form e nel primo il campo "numero" ha un numero dentro per lui è tutto ok!
Devo quindi dirgli di stare attento anche al form, ma come faccio? ecco il codice del js:
Codice PHP:
function 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);
alert(p+' '+i+' '+x);
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;
nmb = nm;
if(nmb=='name'){nmb='Nome'}
if(nmb=='phone'){nmb='Telefono'}
if(nmb=='surname'){nmb='Cognome'}
if(nmb=='payment'){nmb='Pagamento'}
if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) {
p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nmb+' deve contenere un indirizzo email.\n';
}
else if (test!='R') {
num = parseFloat(val);
if (isNaN(val)) errors+='- '+nmb+' deve contenere un numero.\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+='- '+nmb+' deve contenere un numero tra '+min+' e '+max+'.\n';
}
}
} else if (test.charAt(0) == 'R') {errors += '- '+nmb+' è obbligatorio.\n'; }
}
}
if (errors) alert('Sono stati riscontrati i seguenti errori:\n'+errors);
document.MM_returnValue = (errors == '');
}
e questo è l'esempio di html
Codice PHP:
<form name="modify1" action="datecursesuserspayments_modify.php" method="post" onsubmit="MM_validateForm('payment','','RisNum');return document.MM_returnValue">
<input name="payment" type="text" value="20.00" maxlength="10" size="10"/>
<input name="date" id="date" type="text" value="21-09-2006" maxlength="10" readonly="1" size="10"/>
<input type="submit" name="submit" value="Modifica" />
</form>
<form name="modify2" action="datecursesuserspayments_modify.php" method="post" onsubmit="MM_validateForm('payment','','RisNum');return document.MM_returnValue">
<input name="payment" type="text" value="20.00" maxlength="10" size="10"/>
<input name="date" id="date" type="text" value="21-09-2006" maxlength="10" readonly="1" size="10"/>
<input type="submit" name="submit" value="Modifica" />
</form
help!!!