Bonjour,
j'ai un soucis avec un script Javascript.(ci-dessous) apellé depuis une page C#
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>
            &nbsp;<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 : 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>
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 : 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()
}
Dans les 2 cas, c'est la fonction '.length' qui semble être en cause.
Si qq1 à une idée, merci d'avance