Addition javascript via formulaire

Résolu/Fermé
b-boybaki Messages postés 160 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 10 juin 2010 - 6 juil. 2009 à 15:19
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 7 juil. 2009 à 11:54
Bonjour,

voila ma question :

je voudrais pouvoir ajout +1 à la valeur dans le formulaire de type texte je suis bloquer j'ai déjà essayer plein de solution mais aucun ne marche je desespère

<html>
<head>
<script type="text/javascript">
function calcul()
{
var nombre = document.form[0].a.value;

var total = total + nombre;

document.form[0].a.value = total;
}
</script>
</head>
<body>
<form>
<input type="text" id="a" name="relou" value="1" />
<input type="button" onclick="javascript:calcul('1')" value="+" />
</form>
</body>
</html>

je vois pas du tout comment faire

merci de votre aide
A voir également:

12 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
6 juil. 2009 à 15:41
Bonjour,

Est-ce réellement toi qui a codé ça ? Parce que c'est si simpliste que si tu as codé toi même ce que tu nous met, tu dois être en mesure de corrigé tes erreurs.
Enfin soit, ton problème est que tu n'incrémente pas la valeur de ton champ, donc tu ne risque pas de le voir grandir au fur et à mesure de tes clics.

Un code correct serait le suivant :
function increaseValue( theValue )
{
var htmlElement = document.getElementById("a");
if ( htmlElement  != null ){
   htmlElement.value = Integer.parseInt(htmlElement.value) + theValue;
}
} 


Ainsi si tu appelle la méthode avec un entier, la valeur de ton champ devrait être incrémentée du nombre passé en paramètre :
<input type="button" onclick="javascript:calcul('1')" value="+" /> 
OU
<input type="button" onclick="javascript:calcul('12')" value="+" /> 


Code non testé, possible qu'il y ai des erreurs de frappe, mais l'idée est là et devrait fonctionner.
0
b-boybaki Messages postés 160 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 10 juin 2010 3
6 juil. 2009 à 15:51
j'ai une question

theValue aura pour valeur javascript:calcul('12') ce que l'on a mis entre parenthese ???

sinon oui c'est moi qui est coder a l'aide de ce site

http://www.lehtml.com/js/forms.htm
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
6 juil. 2009 à 15:54
'theValue' est le paramètre de la fonction, donc si tu met "12", il vaudra effectivement "12".
0
b-boybaki Messages postés 160 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 10 juin 2010 3
6 juil. 2009 à 15:58
ouki mais y'a un probleme si on met juste un seul + sa concatene

dc fau mettre un parseint a chake fois no ???

pcq si j'ai bien compri le parseint transforme de valeur de type texte en nombre ?

et autre question pourquoi tu as mis .value ici :

htmlElement.value

????
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
6 juil. 2009 à 16:22
htmlElement fait référence à ton object de type text "a", donc si tu fais "htmlElement.value", tu récupère la valeur de ton élément texte.

htmlElement.value = Integer.parseInt(htmlElement.value) + 12

Integer.parseInt est pour s'assurer que le valeur soit numérique, de façon à l'additionner avec ta valeur d'ajout.
Ton champ étant de type texte, si tu ne parse pas, il y a des chances pour que ça se concatène au lieu de s'additionner comme tu l'as dit.

Par contre en paramètre il ne faut pas que tu le passe en tant que chaine de caractère, mais bien en numérique.
Sinon pour être sur et pouvoir passer le paramètre n'importe comment (chaine ou numérique), ajouter un parseInt sur le paramètre comme ceci :

htmlElement.value = Integer.parseInt(htmlElement.value) + Integer.parseInt(theValue);
0
b-boybaki Messages postés 160 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 10 juin 2010 3
6 juil. 2009 à 16:25
ok je j'essay de faire sa si je trouve je te poseterai ma soluition tu me dira ce que t'en pense pcq je veux pas que sa soit le fouilli lol
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
6 juil. 2009 à 16:31
Autant pour moi mes souvenirs ne sont plus aussi bons.
Ce n'est pas "Integer.parseInt(...)" mais "parseInt(...)" tout court qu'il faut utiliser.

Un court exemple qui fonctionne :

<script language="javascript">

	function add ( theValue ){
		var obj = document.getElementById("a");
		if ( obj != null ){
			obj.value = parseInt(obj.value) + parseInt(theValue);
		}
	}
		
</script>



Numero : <input type='text' id='a'/>
<BR>
<input type='button' value='+' onclick='add(12)';

0
b-boybaki Messages postés 160 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 10 juin 2010 3
6 juil. 2009 à 16:42
sa ne marche pas il me met NaN =S

moi j'ai fait sa mais il ne marche que une fois, si je reclik sur le bouton il ne refait pas l'addition =S

<html>
<head>
<script type="text/javascript">
function calcul2(valeur)
{
var n = 1;
var n1 = 1;
var total = n + n1 + parseInt(valeur);
document.forms[0].a.value=total;
}
</script>
</head>
<body>
<form>
<input type="" name="a" value="1"/>
<input type="submit" onClick="javascript:calcul2('1');return(false)" value="+" />
</form>
</body>
</html>

j'ai même essayer de mettre sa :

var total = total + n + n1 + parseInt(valeur);

mais si je met sa il me met NaN
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
6 juil. 2009 à 16:59
Ben, les résultats que tu obtiens me semble plutôt normaux.

Nul part tu ne récupère la valeur de ton champ comme je l'ai montré dans mon code, comment veux-tu donc qu'il s'incrémente au fil de tes click ?
Ton script fonctionne, seulement c'est toujours (et ce sera toujours) la même valeur qui est affichée.

Si tu met : var total = total + ...., effectivement tu obtiens "NaN" puisque 'total' n'est pas défini à l'intérieur de ton calcul (tu le déclare sur la même ligne comme le résultat de ton calcul)

Regarde bien ce que j'ai mis dans le code, récupère la valeur de ton champ et additionne la avec ton chiffre passé en paramètre, et là seulement ça fonctionnera.
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
6 juil. 2009 à 17:13
Forcément tu ne fais pas ce que je t'ai montré, ça ne risque pas de fonctionner.
0
b-boybaki Messages postés 160 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 10 juin 2010 3
6 juil. 2009 à 17:36
sa y'est j'ai trouver lol

enfaite c'était vraimen tout bête :

<html>
<head>
<script type="text/javascript">

function calcul2(valeur)
{
document.forms[0].a.value= parseInt(document.forms[0].a.value,10)+parseInt(valeur,10);
}
</script>
</head>
<body>
<form>
<input type="text" name="a" value="1"/>
<input type="button" onclick="calcul2('1');" value="+" />
<input type="button" onclick="document.forms[0].a.value='1';" value="mise a zero"/>
</form>
</body>
</html>

merci pour ton aide
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
7 juil. 2009 à 11:54
En faite il te faut surtout lire ce que les autre te marquent...
Bon courage pour la suite.
0