Grazie x la risposta.
Ho, però, un problema: ho provato ad integrare il tuo controllo su una funzione già esistente, ma il form viene validato senza eseguire il controllo:
codice://Validazione form function validateNumber(fieldObj, customAlert, sep, dec) { // Solo numeri interi if (sep.length != 1) re = new RegExp("^\\s*(\\d+)\\s*$", ""); // Numeri interi e float (separatore decimale definito da 'sep') else { if (dec > 0) re = new RegExp("^\\s*(\\d*\\" + sep + "\\d{" + dec + "})\\s*$", ""); else re = new RegExp("^\\s*(\\d+(\\" + sep + "\\d+)?|\\" + sep + "\\d+)\\s*$", ""); } var rt = fieldObj.value.match(re); if (!rt) { if (customAlert.length > 0) alert(customAlert); else alert("Il campo '" + fieldObj.name + "' deve contenere un numero!"); fieldObj.value = ""; fieldObj.focus(); return(false); } //INIZIO TUO CODICE DI CONTROLLO var namePattern = /^BPT_/; var nameFields = {}; var fields = f.getElementsByTagName('input'); for (var i=0; i<fields.length; i++) { if (namePattern.test(fields[i].name)) { if (fields[i].value in nameFields) { alert([fields[i].value, ' è un valore ripetuto.'].join(' ')); return false; } nameFields[fields[i].value] = fields[i].name; } } // Reimposta il campo senza eventuali spazi in testa e in coda fieldObj.value = rt[1]; return(true); } // Array con i dati per le validazioni var validateTypes = new Array( new Array(validateNumber, "ssn", "PBT_1", "", "", 0, "Q_1", "", "", 0, "N_1", "", "", 0 ); function submitIt(frmObj) { for ( var n = 0 ; n < validateTypes.length ; n++ ) { var arr = validateTypes[n]; var parms = arr[1]; // Tipo di parametri da passare alla // funzione di validazione var cb = parms.length + 1; // Numero di parametri supplementari // da passare alla funzione di validazione for ( var m = 2 ; m < arr.length ; m += cb ) { var sEval = "var rt = arr[0](frmObj[arr[m]]"; for ( var e = 1 ; e < cb ; e++ ) { switch(parms.substr(e - 1, 1)) { case "s": // Il parametro è una stringa sEval += ", '" + arr[m + e] + "'"; break; case "n": // Il parametro è un numero (intero o float) case "p": // Il parametro è uno statement sEval += ", " + arr[m + e]; break; } } eval(sEval + ");"); // Se il corrente test non è riuscito, termina abortendo l'invio del FORM if (!rt) return(false); } } // Tutte le validazioni sono riuscite, abilita l'invio del FORM return(true); } .... <form method="POST" action="vai.asp" onsubmit="return(submitIt(this));">
![]()

Rispondi quotando