OVH Cloud OVH Cloud

Fonction et elements de formulaire

16 réponses
Avatar
Hakito
Bonjour,

Je suis en train de créer une page pour générer une fiche de perso à un
jeu de rôle (INS MV pour les connaisseurs)
J'ai crée une fonction qui permet d'attribuer des points à des
caractéristiques. Cependant, j'ai un soucis avec l'argument de la
fonction d'ajout qui ne semble pas vouloir indiquer le bon element de
mon formulaire.

En fait, mon navigateur me dit que document.monForm.monArgument n'est
pas un objet...
J'ai essayer plusieurs méthode comme concaténer des chaines afin
d'avoir le chemin de objet de formulaire, j'ai passer l'argument ds une
variable que j'ai mis dans mon chemin d'objet de formulaire, mais rien
n'y fait.

Si dessous, mon code actuel... Si quelqu'un pouvait jeter un coup
d'oeil pour me mettre sur une piste de solution... (passke j'ai pas
envie de me taper 6 fonctions ou conditions vu que je veux reutiliser
cette fonction pour les compétences (primaires et secondaires)
suivantes (env. 20...)

function ajout(chp){
document.etape1.chp.value=parseFloat(document.etape1.chp.value)+0.5;
document.etape1.total.value=parseInt(document.etape1.total.value)-2;
if(document.etape1.chp.value>5.5){
alert("Vous ne pouvez pas attribuer plus de points");
document.etape1.chp.value=5.5;
document.etape1.total.value=parseInt(document.etape1.total.value)+2;
}
}

--
HAKITO
"y'a pas de tralala, y'a que des résultats"

6 réponses

1 2
Avatar
ASM

J'avoue que je coince un peu...
Si tu le souhaites : http://tinyspit.free.fr/astuces/insmv/ il s'agit
de la 2nde page (apres validation)


Désolé, je n'irai pas pour autopsie
sur un site dont je ne sais le poids des images
surtout s'il faut en plus passer des portails d'accès

Merci (je suis vraiment perdu là).


Heureusement YD est venu à notre secours ;-)

--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************

Avatar
ASM

l'utilisateur peut modifier la valeur du champs...
AHAHA, c'est un peu bête...


<input type=text disabled blabla>

devrait aussi fonctionner

ou à utiliser en fin de fonction de remplissage du champ

document.monForm.chp.disabled=true;
}

readonly n'est pas adapté (vu qu'il ne fonctionne que sous
IE4+), mais je ne trouve pas de description de l'attribut readOnly
(js)...


readonly (comme disabled) ne fonctionnent pas non plus sur mon NC4.5
il faut alors tricher :
<form>
essayer d'entrer un complement dans ces champs (et en sortir pour valider)
<p><input type=text onfocus="a= this.value;" onchange="this.value=a" value="123">
<p>ou (plus rigolot)
<input type=text onkeydown="a=this.value;" onkeyup="this.value=a" value="123">
</form>

readonly (et disabled) devraient fonctionner dans mon Mozilla1.2 (et mon IE5.1)

--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************

Avatar
YD

truc = o.value*1 + 0.5;


C'est tout aussi simple d'écrire
truc = + o.value + 0.5;
ou encore
truc = (+o.value) + 0.5;
je trouve... De plus, c'est la seule fonction de l'opérateur unaire +
(opérateur unaire, je rappelle, signifie opérateur qui s'applique
à un seul opérande).

Mais du coup, pourqui ne pas utiliser parseFloat() ?



Pourquoi pas ? parseFloat fouille la chaîne fournie en argument et
recherche une partie numérique au début de la chaîne après en avoir éliminé
les espaces, sauts de ligne, tabulations qui précéderaient le premier caractère.
Il ignore les caractères ne rentrant pas dans l'écriture décimale d'un nombre
ensuite.

Le + fait à peu près la même chose sauf qu'il retourne 0 si la chaîne est vide
ou ne contient que des blancs -- parseFloat renvoie alors NaN (Not a Number, pas
un nombre). S'il trouve une valeur débutant par 0x et suivi de l'écriture
hexadécimale d'un nombre il renvoie ce nombre alors que parseFloat renvoie bien
logiquement 0.

parseFloat() si je me trompe
va rechercher dans ce que tu lui donne le premier nombre y rencontré
et le considérer comme entité flottante (c a d avec virgule) mais pas
obligatoirement considéré comme nombre (ce reste un string, une chaîne)


Non,non. parseFloat() renvoie un nombre.

pour te simplifier la vie, systématiquement,
tu indiques bien au JS de quoi tu causes
[...] et puis ça roule


C'était le sens de mon post précédent. JavaScript est très tolérant sur
les conversions, et la plupart du temps fait ce à quoi on s'attend. Les
problèmes arrivent presque toujours avec l'opérateur + binaire qui se
comporte différemment selon qu'il s'applique à des nombres (addition) ou
des chaînes (concaténation). Surtout il faut savoir que si l'un de ses
opérandes est une chaîne, il effectue une concaténation en transformant
la valeur numérique en String.
"1" + 1 --> "11"

Les opérateurs de comparaison se comportent différemment et c'est la valeur
numérique qui prime
"01" == (0.5 * 2) --> true ("01" converti en Number 1 comparé avec 0.5 *2)
à comparer avec
"01" == String(0.5 *2) --> false (String(0.5 * 2) --> "1" différent de la chaîne "01")

Et du coup, je reste sur ma question, à quoi bn avoir parseFloat si
c'est pour utiliser + ?



+ unaire fait exactement la conversion implicite du js. parseFloat est
différent...
Pour mieux comprendre, comparer ce que donne avec + et parseFloat() :
"0xFADE", "-Infinity", "Infinity tyty", " n ", "-2.5E4",
"-2.5E4 est une valeur", "+325px", "90%"...

Quelques choses m'échappent...


ha? serais-tu le seul ?

À qui le dites-vous !


--
Y.D.


Avatar
ASM

Non,non. parseFloat() renvoie un nombre.


Mais oui ! bon sang ! mais c'est bien sûr !

alert(parseFloat(navigator.appVersion,10)+0.5);
me le prouve
contrairement à
alert('nbre = '+parseFloat(navigator.appVersion,10)+0.5);

Faut vraiment avoir l'oeil à tout !

--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************

Avatar
Hakito
Désolé, je n'irai pas pour autopsie
sur un site dont je ne sais le poids des images
surtout s'il faut en plus passer des portails d'accès
Euh.. bah y'a pas d'images et encore moins de portail d'accés...


--
HAKITO
"y'a pas de tralala, y'a que des résultats"

Avatar
ASM

Désolé, je n'irai pas pour autopsie
sur un site dont je ne sais le poids des images
surtout s'il faut en plus passer des portails d'accès
Euh.. bah y'a pas d'images et encore moins de portail d'accés...



Je n'en sais rien (images)
et tu dis qu'il faut valider et passer en 2ième page

donc suis allé voir
heu ...
<input type="text" size="2"
taille=2 me semble un peu court pour pouvoir afficher '2.5'

ça y est, c'est réparé , non ?


1 2