Bonjour a tous,
Je tiens tout d'abord a remercier la communauté de developper.net, pour toute l'aide que vous m'avez apporté a chacun de mes soucis. Je n'ai jusqu'a présent jamais eu a m'inscrire du fait que mes soucis eu été résolu grace aux posts deja existants.
Pouvoir soulever un bug qui n'etait pas traité a donc ete pour moi d'une grande jouissance (ou pas), et l'incomprehension qui la genere m'exalte (ou pas²)
Voici donc mon soucis :
J'ai un formulaire tout ce qu'il y a de plus banal :
et des verifs, tout aussi banales...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <label for="min">MIN<font color="red">*</font></label> <input type="text" name="min" size="4"onblur="verifMin(this)"/> <label for="iopcc">IOPCC<font color="red">*</font></label> <input type="text" name="iopcc" size="4"onblur="verifRest(this)"/> <label for="max">MAX<font color="red">*</font></label> <input type="text" name="max" size="4" onblur="verifMax(this)"/>
Ces 3 fonctions se comportent de la meme maniere (et la fonction surligne ne comporte aucun accrochage). Mon soucis cependant, se porte au niveau du modulo... Un 5 % 0.1 me renvoit 0.99999967, un 0.1 % 0.1 me renvoit 2.xxxxxxxExx
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
43
44
45
46
47
48
49
50 function verifMin(champ) { var champs = (champ.value).replace(",","."); var min = parseFloat(champ.value); var mina = min % 0.1 ; if(isNaN(min) || min < 0 || min > 8 || mina != 0) { surligne(champ, true); return false ; } else { surligne(champ, false); return true ; } } function verifMax(champ) { var champs = (champ.value).replace(",","."); var max = parseFloat(champs); var maxa = max % 0.1 ; if(isNaN(max) || max < 1 || max > 8 || maxa != 0) { surligne(champ, true); return false ; } else { surligne(champ, false); return true ; } } function verifRest(champ) { var champs = (champ.value).replace(",","."); var rest = parseFloat(champs); var resta = rest % 0.1 ; if(isNaN(rest) || rest < 5 || rest > 30 || resta != 0) { surligne(champ, true); return false ; } else { surligne(champ, false); return true ; } }
etc etc.
J'ai cherché dans deux trois endroits, l'operande qui prend que les entiers toussa toussa, mais n'ai pas eu satisfaction de cette reponse pour la simple et "mauvaise" raison qu'un modulo 0.25 fonctionne normalement (puisque j'en ai dans mon formulaire...)
Je vous avoue que j'ai un peu de mal a comprendre d'ou vient le soucis, et avoir la tete dans le code doit pas aider, mais je cale totalement :s
Partager