Tu peux faire comme ça (non testé, mais on doit pas être loin) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| // Vérifie que le total est 100. Renvoie true si ok, false sinon
function checkTotalPercentage() {
var total = 0;
for (var i=0;;i++) {
var elements = document.getElementsByName("element[" + index + "].pourcentage");
if (elements.length == 0) {
break; // On a parsé tous les champs
} else {
var myElement = elements[0];
if (!checkPercentage(myElement.value)) {
alert("'" + myElement.value + "' n'est pas un pourcentage correct");
return false;
} else {
total += parseFloat( myElement.value );
}
}
}
if (total != 100) {
alert("Le total des pourcentages n'est pas égal à 100 (" + total + ")");
return false;
} else {
return true;
}
}
// Vérifie que c'est bien un nombre décimal, et qu'il est compris entre 0 et 100
function checkPercentage(valeur) {
try {
var myFloat = parseFloat(valeur);
if (myFloat < 0 || myFloat > 100) {
return false;
}
} catch (ex) {
// N'est pas "castable" en float
return false;
}
return true;
} |
Puis tu appelles checkTotalPercentage() dans le onclick de ton html:submit, ou dans le onsubmit de ton html:form :
<html:form ... onSubmit="return checkTotalPercentage();">
Partager