Bonjour,
j'ai un soucis avec un script Javascript.(ci-dessous) apellé depuis une page C#
Lorsque l'utilisateur saisi un nombre décimal, il peut taper par exemple '10,' mais lorsqu'il tape le premier chiffre après la virgule, la fonction détecte une erreur et affiche 'ERR'.
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 function IsFloat(sChaine,nbMaxLeft,nbMaxRight){ var indexComa var retour = true if (sChaine.substring(0,1) == '-') nbMaxLeft++ indexComa = sChaine.indexOf(',') if (indexComa == -1){ if ((sChaine.length > nbMaxLeft) || (isNaN(sChaine))) retour = false } else if (nbMaxLeft < indexComa) retour = false else if (nbMaxRight < sChaine.length - indexComa -1) retour = false else if (isNaN(sChaine.substring(0,indexComa))) retour = false else if (isNaN(sChaine.substring(indexComa+1))) retour = false return retour } function SaisieRemiseA() { if (window.event.keyCode != '188' && window.event.keyCode != '110') { var sRemiseA,sCoefA; sRemiseA = JsTrim2(document.getElementById("<%=RemiseA.IDClient%>").value); if (window.event.keyCode == 8 && sRemiseA == 'ER') { sRemiseA = ""; sCoefA = ""; } else if (sRemiseA.length == 0){ sRemiseA = ""; sCoefA = ""; } else if (IsFloat(sRemiseA,3,2) == false){ sRemiseA = "ERR"; sCoefA = "ERR"; } else { sCoefA = MyRound((100 - parseFloat(sRemiseA.replace(',','.')))/100,4); } document.getElementById("<%=RemiseA.IDClient%>").value = JsTrim2(sRemiseA); document.getElementById("<%=CoefA.IDClient%>").value = JsTrim2(sCoefA); } } <table> <tr> <td> <asp:Label id="MyCaption" runat="server"></asp:Label> </td> <td> <asp:TextBox id="Numk" style="TEXT-ALIGN: right" runat="server" ></ASP:TextBox> </td> <%if (Unite != "") {%> <td> <asp:Label id="MyUnit" runat="server"></asp:Label> </td> <%}%> <td> <asp:CustomValidator id="NumValidator" CssClass="TexteRouge" OnServerValidate="ValideNumServeur" Display="Static" Text="*" EnableClientScript="true" runat="server"/> </td> </tr> </table>
Mais ce qui est vraiment étonnant, c'est que je n'arrive pas à reproduire ce pb sur un autre poste (portable ou fixe) que sur le portable de l'utilisateur. Il utilise la version 6 d'IE, execute bien les scripts javascript. Je ne comprene pas ce qui ce passe. Je ne sais si mon post est bien situé mais je suppose que le pb vient du javascript. En effet, cette utilisateur rencontre un autre pb avec un autre control (C#) qui permet de saisir une date.
Normalement, quand l'utilisateur saisie 2 chiffres pour le jour, le focus passe sur le champ mois. Ce n'est pas le cas pour mon utilisateur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <table> <tr> <td><asp:Label id="MyCaption" runat="server"/></td> <td><asp:TextBox maxLength="2" size="2" id="jour" name="jour" runat="server"/></td> <td>/</td> <td><asp:TextBox maxLength="2" size="2" id="mois" name="mois" runat="server"/></td> <td>/</td> <td><asp:TextBox maxLength="4" size="4" id="annee" name="annee" onchange="this.value=sais_annee(this.value)" runat="server"/></td> <td><%if (!ReadOnly){%><a href="javascript:ShowCalendar<%=ClientID%>();" TABINDEX=-1 id="Show<%=ClientID%>" name="Show<%=ClientID%>"><img border="0" onmouseover="javascript:this.src='../images/down2.gif';" onmouseout="javascript:this.src='../images/down.gif';" src='../images/down.gif' WIDTH="14" HEIGHT="14"/></a><%}%></td> <td><asp:CustomValidator id="DateValidator" CssClass="TexteRouge" OnServerValidate="dateValideServeur" Display="Static" Text="*" EnableClientScript="true" runat="server"/></td> </tr> </table>
Voici le code javascript.
Dans les 2 cas, c'est la fonction '.length' qui semble être en cause.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 function sais_date(val,Champsuiv){ var touche = window.event.keyCode if ((touche >=96 && touche <=105) || (window.event.shiftKey && touche >=48 && touche <=57)) if (val.length==2) Champsuiv.focus() }
Si qq1 à une idée, merci d'avance
Partager