Comportement différent d'un script sur un autre poste
Bonjour,
j'ai un soucis avec un script Javascript.(ci-dessous) apellé depuis une page C#
Code:
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> |
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'.
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.
Code:
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> |
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.
Voici le code javascript.
Code:
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()
} |
Dans les 2 cas, c'est la fonction '.length' qui semble être en cause.
Si qq1 à une idée, merci d'avance