Ciao, utilizzo questa funzione per sommare dei campi in un form:
codice:
function updateSum_quant()
{
var frmObj = document.frmEnquiry;
var sum_quant = parseFloat("0" + frmObj.Quantita_1.value) +
parseFloat("0" + frmObj.Quantita_2.value) +
parseFloat("0" + frmObj.Quantita_3.value) +
parseFloat("0" + frmObj.Quantita_4.value) +
parseFloat("0" + frmObj.Quantita_5.value) +
parseFloat("0" + frmObj.Quantita_6.value);
// Arrotonda a 2 cifre decimali e converti in stringa
sum_quant = (Math.round(sum_quant * 100) / 100).toString();
// Cerca il punto decimale, se esiste
var n_quant = sum_quant.indexOf(".");
if (n_quant < 0) sum_quant += ".00";
else while(sum_quant.substr(n_quant).length < 3) sum_quant += "0";
frmObj.Tot_Quantita.value = sum_quant;
}
var timerID_quant = null;
// flTimeout è true solo se i methods window.setTimeout() e window.clearTimeout()
// sono implementati dalla versione corrente del DOM (browser del cliente)
var flTimeout_quant = (typeof(window.setTimeout) != "undefined" &&
typeof(window.clearTimeout) != "undefined");
function deferUpdate_quant()
{
// Se il tempo di timeout è in corso, resettalo
if (timerID_quant != null) window.clearTimeout(timerID_quant);
// Differisci 'updateSum()' di 400 millisecondi se il method 'window.setTimeout()'
// è implementato, in caso contrario, invoca 'updateSum()' direttamente
if (flTimeout_quant) timerID_quant = window.setTimeout("timerID_quant = null; updateSum_quant();", 400);
else updateSum_quant();
}
Che poi richiamo così:
codice:
<input type="text" name="Tot_Quantita" onkeyup="deferUpdate_quant();" readonly>
Ma il campo Tot_Quantita si aggiorna soltanto quando passo sul campo con il tasto tabulatore, come faccio a farlo aggiornare in tempo reale?
Gracias!