codice:
<html>
<head>
<script language="javascript" type="text/javascript">
<!--
function validateEmpty(fieldObj, customAlert)
{
// Se il campo non è vuoto, ritorna true (ok)
if (fieldObj.value.length > 0) return(true);
if (customAlert.length > 0) alert(customAlert);
else alert("Il campo '" + fieldObj.name + "' è obbligatorio !");
fieldObj.focus();
return(false); // Errore
}
function validateNumber(fieldObj, customAlert) {
alert("oggetto:"+fieldObj.name+" tipo:"+fieldObj.type+" mess:"+customAlert);
if(fieldObj.value.match(/(\d*\.\d{0,2})|\d+/) return true;
else {
if(customAlert.length) alert(customAlert);
else alert("Il campo '" + fieldObj.name + "' deve contenere un numero!");
fieldObj.value = "";
fieldObj.focus();
return false;
}
}
function validateDate(fieldObj)
{
var re = new RegExp("^([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})$", "");
var dt = fieldObj.value.match(re);
if (!dt || // formato non valido
dt[1] < 1 || dt[1] > 31 || // giorno non corretto
dt[2] < 1 || dt[2] > 12 || // mese non corretto
dt[3] < 1980) // anno non corretto (minore del 1980)
{
alert("La Data inserita non è corretta.");
fieldObj.focus();
fieldObj.select();
return(false);
}
return(true);
}
function validateEmail(fieldObj)
{
var re = new RegExp("^[a-z][a-z0-9]*\\.[a-z][a-z0-9]*@xxxxx\\.it$", "i");
if (!fieldObj.value.match(re))
{
alert("L'indirizzo Email inserito non è corretto.\nL'indirizzo email è obbligatorio nella forma \"nome.cognome@xxxxx.it\".");
fieldObj.focus();
fieldObj.select();
return(false);
}
return(true);
}
// Array con i dati per le validazioni
var validateTypes = new Array(
new Array(validateEmpty, "s", "NOME_TR", "",
"C2H2_C2H4_PPM", "",
"CH4_H2_PPM", "",
"C2H4_C2H6_PPM", ""
),
new Array(validateNumber, "ssn", "POTENZA_MVA", "", "", 0,
"O2_PPM", "", "", 0,
"N2_PPM", "", "", 0,
"CO_PPM", "", "", 0,
"CO2_PPM", "", "", 0,
"H2_PPM", "", "", 0,
"CH4_PPM", "", "", 0,
"C2H6_PPM", "", "", 0,
"C2H4_PPM", "", "", 0,
"C2H2_PPM", "", "", 0
));
function validateForm(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 + ");");
if (!rt) return(false);
}
}
// Tutte le validazioni sono riuscite, abilita l'invio del FORM
return(true);
}
function update_field(val1, val2, dst_field)
{
if (isNaN(val1) || isNaN(val2)) dst_field.value = "";
else if (val2 == 0.0) dst_field.value = "*Attenzione, divisione per zero*";
else dst_field.value = val1 / val2;
}
function calcola_rapporti()
{
// Recupero i valori dai campi A, B, C
var H2_PPM = parseFloat(document.rapporti.H2_PPM.value);
var CH4_PPM = parseFloat(document.rapporti.CH4_PPM.value);
var C2H6_PPM = parseFloat(document.rapporti.C2H6_PPM.value);
var C2H4_PPM = parseFloat(document.rapporti.C2H4_PPM.value);
var C2H2_PPM = parseFloat(document.rapporti.C2H2_PPM.value);
update_field(C2H2_PPM, C2H4_PPM, document.rapporti.C2H2_C2H4_PPM);
update_field(CH4_PPM, H2_PPM, document.rapporti.CH4_H2_PPM);
update_field(C2H4_PPM, C2H6_PPM, document.rapporti.C2H4_C2H6_PPM);
}
var timeoutID = null;
// flTimeout è true solo se i methods window.setTimeout() e window.clearTimeout()
// sono implementati dalla versione corrente del DOM (browser del cliente)
var flTimeout = (typeof(window.setTimeout) != "undefined" &&
typeof(window.clearTimeout) != "undefined");
function delayedUpdate()
{
// Se il tempo di timeout è in corso, resettalo
if (timeoutID != null) window.clearTimeout(timeoutID);
// Differisci 'calcola_rapporti()' di 400 millisecondi se il method 'window.setTimeout()'
// è implementato, in caso contrario, invoca 'calcola_rapporti()' direttamente
if (flTimeout) timeoutID = window.setTimeout("timeoutID = null; calcola_rapporti();", 400);
else calcola_rapporti();
}
//-->
</script>
<body>
<form name="rapporti" method="post" action="insertest.asp" onsubmit="return(validateForm(this));">
<input type="text" name="NOME_TR" size="20"> NOME_TR
<input type="text" name="POTENZA_MVA" size="20"> POTENZA_MVA
<input type="text" name="O2_PPM" size="20" onkeyup="delayedUpdate();"> O2_PPM
<input type="text" name="N2_PPM" size="20" onkeyup="delayedUpdate();"> N2_PPM
<input type="text" name="CO_PPM" size="20" onkeyup="delayedUpdate();"> CO_PPM
<input type="text" name="CO2_PPM" size="20" onkeyup="delayedUpdate();"> CO2_PPM
<input type="text" name="H2_PPM" size="20" onkeyup="delayedUpdate();"> H2_PPM
<input type="text" name="CH4_PPM" size="20" onkeyup="delayedUpdate();"> CH4_PPM
<input type="text" name="C2H6_PPM" size="20" onkeyup="delayedUpdate();"> C2H6_PPM
<input type="text" name="C2H4_PPM" size="20" onkeyup="delayedUpdate();"> C2H4_PPM
<input type="text" name="C2H2_PPM" size="20" onkeyup="delayedUpdate();"> C2H2_PPM
<input type="text" name="C2H2_C2H4_PPM" readonly size="20"> C2H2_C2H4_PPM (C2H2_PPM / C2H4_PPM)
<input type="text" name="CH4_H2_PPM" readonly size="20"> CH4_H2_PPM (CH4_PPM / H2_PPM)
<input type="text" name="C2H4_C2H6_PPM" readonly size="20"> C2H4_C2H6_PPM (C2H4_PPM / C2H6_PPM)
<input type="image" src="img/salva_button.gif" width="84" height="16">
</form>
</body>
</html>
P.S. = nel form mancano i campi email e data_prelievo che sono richiamati nelle funzioni di controllo, ma che funzionano regolarmente e nulla hanno a che vedere con l'errore presentato dal form.