Besoin d'aide pour les + et -

[Résolu]
Signaler
Messages postés
392
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
26 septembre 2009
-
Messages postés
289
Date d'inscription
vendredi 11 mars 2005
Statut
Membre
Dernière intervention
3 avril 2008
-
Bonjour, j'ai un probleme comme vous pouvez vous en douté, mais je sais, le titre du sujet est pas bien !



En fait, je voudrais faire un truc avec un nombre de point inital et
que l'on ne peut pas changer et plusieur bouton + et - qui baisse ou
"augmente" (elle ne doit pas dépasser la valeur initial).



Lorsque l'on ajoute, ca baisse la valeur et lorsque l'on enlève c'est augment la valeur.

En fait, c'est plusieur champ qui doivent avoir des point et lorsque
l'on met un point, ca baisse la valeur initial de 1. Et il faudrait
aussi que à la fin, l'utilisateur valide et je doit pouvoir recupérer
ces champs.



Merci de m'aider et j'espère que vous avez compris mon pb sinon dites le moi et j'essaiyerais d'être plus clair!



Merci et A++

7 réponses

Messages postés
289
Date d'inscription
vendredi 11 mars 2005
Statut
Membre
Dernière intervention
3 avril 2008
4
Salut!

Je ne suis pas certain d'avoir tout compris mais si ton problème #1 est le IF dans la fonction valid, c'est que tu essais de comparer la valeur d'un élément de formulaire et l'attribut .value, retourne une chaîne de caractères donc la comparaison s'effectue de gauche a droite caractère par caractère. Il faut convertir en nombre pour comparer des nombres. On peut utiliser la fonction parseInt ou ici dans ton cas on est certain que la valeur est numérique alors on peut utiliser un eval().

Le problème #2 c'est problablement un problème d'utilisation trop fréquente de drogue

Si il se passe rien après le boutton alert c'est que tu ne fait rien. Si tu veux que le résultat soit envoyé a ton php, il faut faire un submit du formulaire.


function valid(form)
{
if (eval(form.max.value) < eval(form.total.value)) alert("Vous avez entrer " + form.total.value + " points alors que la limite est de " + form.max.value);
else
{
alert("Repartition de vos points : \n Attaque : " + form.attaque.value + "\n" + "Defense : " + form.defense.value + "\n" +"Vitesse : " + form.vitesse.value + "\n"+"Perception : " + form.perception.value + "\n" + "Ki : " + form.ki.value + "\n" + "Vie :" + form.vie.value*80 );
form.submit();
}
}

A+, Ghislain
Messages postés
289
Date d'inscription
vendredi 11 mars 2005
Statut
Membre
Dernière intervention
3 avril 2008
4
Salut!

Voici un exemple :


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<STYLE type= "text/css">
. nombre {text-align:right;}
.plusMoin {width:25px;font-weight:bold;}
</STYLE>
<SCRIPT type ="text/javascript">
function changeValeur(nbr,val)
{
t = eval(nbr.value);
if (nbr.valeurInitial==null) nbr.valeurInitial = t;
t = t + val;
nbr.value = t<=nbr.valeurInitial?t : nbr.value;
}
function valid(laValeur)
{
alert(laValeur);
}
</SCRIPT>
</head>

<form action ="">

</form>

</html>



A+, Ghislain
Messages postés
392
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
26 septembre 2009

re, j'ai esasyer d'adapté mon script à la situation mais j'ai été totalement perdu ! je suis désolé !



En fait, moi j'ai plusieur champs (Attaque, Defense etc ..) et je veux
quand on ajoute un + dans attaque, ca fasse moins -1 au point totaux et
+ 1 au point de defense !



Merci de m'aider car j'ai été totalement pommé !!



A++
Messages postés
289
Date d'inscription
vendredi 11 mars 2005
Statut
Membre
Dernière intervention
3 avril 2008
4
Salut!

Fallait le dire plus tôt


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<STYLE type= "text/css">
. nombre {text-align:right;}
.plusMoin {width:25px;font-weight:bold;}
</STYLE>
<SCRIPT type ="text/javascript">
function changeValeur(nbr,val)
{
t = eval(nbr.value);
if (nbr.valeurInitial==null) nbr.valeurInitial = t;
t = t + val;
if (t>nbr.valeurInitial) return;
nbr.value = t;
if (nbr.name != "total") changeValeur(document.forms[0].total,val)
}
function valid(form)
{
alert("attaque : " + form.attaque.value + "\r" +"defense : " + form.defense.value + "\r"+"unautre : " + form.unautre.value + "\r"+"pisunautre : " + form.pisunautre.value+ "\r"+"total : " + form.pisunautre.total);
}
</SCRIPT>
</head>

<form>

</form>

</html>

A+, Ghislain
Messages postés
392
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
26 septembre 2009

Excuse moi mais je suis tres nul en javascript et ce que tu m'a donné ne marche pas !



Lorsque je fait + au attaque et defense ca marche pas lorsque elle sont
à 0 ! quand elle sont négative, ca marche ! Il faudrait que quand je
fait + à l'attaque il y ait + à l'attaque mais - au totale et pareil
pour les autres !



Il faut aussi que le total soit compris entre 0 et sa valeur max
(donné au debut) et les autres ne doivent pas être negative non plus !



Dsl de ne pas l'avoir dis plus tot !



A++
Messages postés
289
Date d'inscription
vendredi 11 mars 2005
Statut
Membre
Dernière intervention
3 avril 2008
4
Salut!

Pas certain d'avoir compris!

Le seul problème que je vois c'est le montant qui tombent en négatif. Pour régler ça, tu dois changer la fonction comme ceci :


function changeValeur(nbr,val)
{
t = eval(nbr.value);
if (nbr.valeurInitial==null) nbr.valeurInitial = t;
t = t + val;
if (t>nbr.valeurInitial || t<0) return ;
nbr.value = t;
if (nbr.name != "total") changeValeur(document.forms[0].total,val)
}

A+, Ghislain
Messages postés
392
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
26 septembre 2009

Salut, j'ai trafiqué le script pour l'adapté à mon truc, la plupart du script marche





<html>

<!-- Date de création: 30/04/2005 -->

<head>

<style type="text/css">

.nombre {text-align:center;}

.plusMoin {width:25px;font-weight:bold;background-color:red}

</style>

<SCRIPT type="text/javascript">

function changeValeur(nbr,val)

{

t = eval(nbr.value);

if (nbr.valeurInitial==null) nbr.valeurInitial = t;

t = t + val;

if (t < nbr.valeurInitial) return;

nbr.value = t;

if (nbr.name != "total") changeValeur(document.forms[0].total,val)

}

function valid(form)

{

if (form.max.value < form.total.value) alert("Vous avez entrer " + form.total.value + " points alors que la limite est de " + form.max.value);

else

alert("Repartition de vos points : \n Attaque : " + form.attaque.value
+ "\n" + "Defense : " + form.defense.value + "\n" +"Vitesse : " +
form.vitesse.value + "\n"+"Perception : " + form.perception.value +
"\n" + "Ki : " + form.ki.value + "\n" + "Vie :" + form.vie.value*80 );

}

</SCRIPT>

</head>



<form action="bonus.php?action=ajout&nom='.$_GET['nom'].'" method="post">

Attaque :


Defense :


Vitesse :


Perseption :


Ki :


Vie :(1 point vaut
80 point de vie)


"
type="hidden">







</form>



</html>



J'ai 2 problème !

1- La comparaiseon ne se fait pas ! je ne comprend pas pourquoi

2- Si ca affiche les point que j'aéi ajouter avec Alert et quze c'est bon et que je clique sur OK il se passe rien !



Je suis perdu ! Merci de me répondre





A++