Je veux faire un formulaire de distribution de points. J'ai reçu 4 entrées type numéro valeur 0-100 et total = 100 points. Nous pouvons donc mettre 25 points dans chaque entrée. Je l'ai déjà fait pour valider le nombre d'entrées min 0 max 100 et il soustrait de la valeur d'entrée totale modifiée. J'ai un problème avec l'ajout de Total. Si l 'utilisateur a déjà changé de valeur, j'ai besoin de faire la valeur Total + (avant modification) et ensuite Total - valeur (après changement). Je ne sais pas comment obtenir de la valeur avant le changement.Récupère une ancienne valeur d'entrée avant modification et change la valeur totale en + ou -
Mon html
<input type="number" min="0" max="100" name="1" />
<input type="number" min="0" max="100" name="2" />
<input type="number" min="0" max="100" name="3" />
<input type="number" min="0" max="100" name="4" />
<input type="text" id="Total" name="Total" value="100"/>
Mon script
$("input[type=number]").keyup(function(event) {
max=100;
min=0;
value=(parseInt($(this).val()));
if(value < min || isNaN(parseInt(value)))
$(this).val(0)
else if(value > max)
$(this).val(100);
else return value;
});
var total, myVal;
$("input[type=number]").change(function(event) {
maxPoints = parseInt($('#Total').val());
myVal = (parseInt($(this).val()) || 0);
total = maxPoints - myVal;
$('#Total').val(total);
});
Si je serais en mesure d'enregistrer ancienne valeur dans une certaine var je changerais .onchange script quelque chose comme ça et je pense que cela devrait fonctionner . Mais comment puis-je obtenir une ancienne valeur?
$("input[type=number]").change(function(event) {
oldValue = ???? - how to get this ? :P
if(oldValue>0){
maxPoints = parseInt($('#Total').val()) + oldValue;
}else{
maxPoints = parseInt($('#Total').val());
}
myVal = (parseInt($(this).val()) || 0);
total = maxPoints - myVal;
$('#Total').val(total);
});
Il ya js fiddle comment cela fonctionne maintenant. Fiddle here
Merci beaucoup :) cela fonctionne maintenant j'ai besoin que de bloquer la possibilité de distribuer plus de 100 points et ne laissez pas total pour aller sous 0 :) testera tout plus tard. – user3748197