Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Calcul instantané

17 réponses
Avatar
DamDamDeo
Bonjour =E0 tous,
je permets ce petit message, ceci afin de soliciter votre aide sur un
petit probl=E8me...

Voici mon formulaire (du moins une partie) :


[code]
<body>
<form name=3D"form1" method=3D"post" action=3D""><table width=3D"389"
border=3D"1">
<table width=3D"46%" border=3D"0" cellspacing=3D"2" cellpadding=3D"0">
<tr>
<td width=3D"29%">&nbsp;</td>
<td width=3D"22%"><div
align=3D"center"><strong>acteur</strong></div></td>
<td width=3D"25%"><div
align=3D"center"><strong>chanteur</strong></div></td>
<td width=3D"24%">total</td>
</tr>
<tr>
<td>Adultes</td>
<td>


<input name=3D"ch_acteur_adultes" type=3D"text"
id=3D"ch_acteur_adultes" size=3D"10" onchange=3D"add()"/


> </td>


<td>
<input name=3D"chanteur_adulte" type=3D"text"
id=3D"chanteur_adulte" size=3D"10" onchange=3D"add()"/>
</
td>
<td><input name=3D"total_adultes" type=3D"text"
id=3D"total_adultes" size=3D"10" style=3D"border:solid 2px #FF6600"
readonly=3D"true"/></td>
</tr>
<tr>
<td>De 12 &agrave; 18 ans</td>
<td>
<input name=3D"ch_acteur_18" type=3D"text"
id=3D"ch_acteur_18" size=3D"10" onchange=3D"add()"/> </
td>
<td>
<input name=3D"chanteur_18" type=3D"text"
id=3D"chanteur_18" size=3D"10" /> </td>
<td><input name=3D"total_18" type=3D"text"
id=3D"total_18" size=3D"10" style=3D"border:solid 2px #FF6600"
readonly=3D"true"/></td>
</tr>
<tr>
<td>Moins de 12 ans</td>
<td>
<input name=3D"ch_acteur_12" type=3D"text"
id=3D"ch_acteur_12" size=3D"10" onchange=3D"add()"/> </
td>
<td>
<input name=3D"chanteur_12" type=3D"text"
id=3D"chanteur_12" size=3D"10" /> </td>
<td>
<input name=3D"total_12" type=3D"text"
id=3D"total_12"
size=3D"10" style=3D"border:solid 2px #FF6600" readonly=3D"true"/

> </td>


</tr>
<tr>
<td>total</td>
<td><input name=3D"total_acteur" type=3D"text"
id=3D"total_acteur" size=3D"10" style=3D"border:solid 2px #FF6600"
readonly=3D"true"/></td>
<td><input name=3D"total_chanteur" type=3D"text"
id=3D"total_chanteur" size=3D"10" style=3D"border:solid 2px #FF6600"
readonly=3D"true"/></td>
<td><input name=3D"total" type=3D"text" id=3D"total"
size=3D"10" style=3D"border:solid 2px #FF6600" readonly=3D"true"/></td>
</tr>
</table>

</form>


</body>
[code]


Le but de ce formulaire est de calculer le nb d'adh=E9rents pour chaque
cat=E9gorie, et pour cela, j'utilise le petit script suivant :


[code]
<script type=3D"text/javascript">
function purge(nbre) {
// conversion s=E9parateur ',' en '.'
nbre =3D nbre.replace(',','.');
// recherche et remplacement de caract=E8res non d=E9sir=E9s
nbre =3D nbre.replace(/([^0-9 ^.]|\.{2,5}|\s)/g,'');
return nbre;


}


function add() {
var f =3D document.forms[0];
var tot =3D 0;
// pour chaque =E9l=E9ment du formulaire
for(var i=3D0; i<f.length; i++) {
// si c'est un champ de texte et dont le nom commence par 'ch_'
if(f[i].type=3D=3D'text' && f[i].name.indexOf('ch_')>=3D0) {
// correction du contenu du champ
f[i].value =3D purge(f[i].value);
// ajout de cette valeur =E0 la variable 'tot'
tot +=3D f[i].value*1;
// comme la valeur d'un champ est de type texte
// on l'a transform=E9e en nombre (en le multipliant par 1)
// avant de faire l'addition

}
}


// insertion du r=E9sultat
f['total_acteur'].value =3D tot;

}


</script>

[/code]


Mon soucis est que ce script ne me permet pas de faire plusieurs
calculs dans un m=EAme formulaire.
Comment rem=E9dier =E0 ce soucis qui commence =E0 me hanter depuis
plusieurs
jours maintenant.


D'avance merci,


DDD

7 réponses

1 2
Avatar
SAM

Et bien voici ce que j'avais déjà pu faire grace à vous :
http://madafraf.ovh.org/formulaire_omlc/formu_omlc.html (voir l'onglet
effectif)


Bon, je n'ai rien vu de nouveau pour additionner en bas de série

Heu ...
il me semble il y avoir beaucoup de JS pour un seul formulaire, non ?
prototype
object-event
hightlight et autres JS pour cette page

Malheureusement je ne sais me servir de 'prototype' et le code que je
peux donner ne s"en sert pas (en particulier pour attraper les choses et
machins).

Voici donc à adapter avec la page du form
(je ne me sers que du form et sur la page il fraudrait se servir du
table) à copier-coller et essayer :



<html>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

<script type="text/javascript">

function purge(nbre) {
nbre = nbre.replace(',','.');
nbre = nbre.replace(/([^0-9 ^.]|.{2,5}|s)/g,'');
return nbre*1; // on renvoie un nombre
}

function nbr2txt(n) {
return n.toString().replace('.',',');
}

function add() {
var f = document.form1;
// nombre total de cellules (même que nombre d'inputs)
var c = f.length;
// nombre de rangées (nombre de rangée du tbody du table)
var r = f.getElementsByTagName('TABLE')[0]; // le table
r = r.getElementsByTagName('TBODY')[0]; // le tbody
r = r.getElementsByTagName('TR').length;
// nombre de cellules par rangée
var n = c/r;
// correction des nombres de rangées et colonnes
c = +c-n; // toutes cellules sauf celles de dernière rangée
r = +r-1; // toutes cellules de rangée sauf dernière
// tableau des totaux par colonne
var tot = [];
// création des totaux par colonnes (totaux mis à zéro)
// la dernière colonne (total de la rangée) est ignorée
for(var i=0; i<n-1; i++) { tot[i] = 0; }
// pour le sous-total de la rangée
var sstot = 0;

// boucle avec un pas de n (boucle sur les rangées)
for(var i=0; i<c; i=i+n) {
sstot = 0; // le sous-total de la rangée est mis à zéro
// boucle sur les inputs de la rangée
for(var j=0; j<(n-1); j++) {
tot[j] += purge(f[+i+j].value); // total de la colonne
sstot += purge(f[+i+j].value); // total de la rangée
}
f[+i+n-1].value = nbr2txt(sstot); // affichage total rangée
}

// la dernière rangée, celle des totaux
sstot = 0;
for(var i=0; i<n-1; i++) { // boucle sur les inputs de la rangée
f[c+i].value = nbr2txt(tot[i]); // affichage du total de la colonne
sstot += tot[i]; // sous-total de la rangée
}
f[c+n-1].value = nbr2txt(sstot); // affichage du total général
}

</script>

<style type="text/css">
input { width: 5em; text-align: center }
input:focus { background: #ff8 }
th input { border-color: red; background: #eee }
</style>

<form name="form1">
<table>
<thead>
<tr>
<th></th>
<th>18</th>
<th>15</th>
<th>12</th>
<th>Ss-Tot</th>
</tr>
</thead>
<tbody>
<tr>
<th>acteurs</th>
<td><input tabindex="1" name="ch_act_18" onchange="add()" /></td>
<td><input tabindex="2" name="ch_act_15" onchange="add()" /></td>
<td><input tabindex="3" name="ch_act_12" onchange="add()" /></td>
<th><input name="ch_act_total" /></th>
</tr>
<tr>
<th>chanteurs</th>
<td><input tabindex="4" name="ch_chant_18" onchange="add()" /></td>
<td><input tabindex="5" name="ch_chant_15" onchange="add()" /></td>
<td><input tabindex="6" name="ch_chant_18" onchange="add()" /></td>
<th><input name="ch_chant_total" /></th>
</tr>
</tbody>
<tr>
<th>totaux</th>
<th><input name="total_18" /></th>
<th><input name="total_15" /></th>
<th><input name="total_18" /></th>
<th><input name="total" /></th>
</tr>
</table>
</form>
</html>



--
sm

Avatar
SAM

Voici donc à adapter avec la page du form


et voici adapté :


<html>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

<script type="text/javascript">

function purge(nbre) {
nbre = nbre.replace(',','.');
nbre = nbre.replace(/([^0-9 ^.]|.{2,5}|s)/g,'');
return nbre*1; // on renvoie un nombre
}

function nbr2txt(n) {
return n.toString().replace('.',',');
}

function ajou(quoi) {
// trouver le table contenant l'élément 'quoi'
var f = quoi.parentNode;
while(f.tagName != 'TABLE') f = f.parentNode;
// en extraire le nbre de rangées du tbody
var r = f.getElementsByTagName('TBODY')[0];
r = r.getElementsByTagName('TR').length+1;
// collection des inputs voulus
f = f.getElementsByTagName('INPUT');
var c = f.length;
var n = c/r;
// correction des nombres de rangées et colonnes
c = +c-n; // toutes cellules sauf celles de dernière rangée
r = +r-1; // toutes cellules de rangée sauf dernière
// tableau des totaux par colonne
var tot = [];
// création des totaux par colonnes (totaux mis à zéro)
// la dernière colonne (total de la rangée) est ignorée
for(var i=0; i<n-1; i++) { tot[i] = 0; }
// pour le sous-total de la rangée
var sstot = 0;

// boucle avec un pas de n (boucle sur les rangées)
for(var i=0; i<c; i=i+n) {
sstot = 0; // le sous-total de la rangée est mis à zéro
// boucle sur les inputs de la rangée
for(var j=0; j<(n-1); j++) {
tot[j] += purge(f[+i+j].value); // total de la colonne
sstot += purge(f[+i+j].value); // total de la rangée
}
f[+i+n-1].value = nbr2txt(sstot); // affichage total rangée
}

// la dernière rangée, celle des totaux
sstot = 0;
for(var i=0; i<n-1; i++) { // boucle sur les inputs de la rangée
f[c+i].value = nbr2txt(tot[i]); // affichage du total de la colonne
sstot += tot[i]; // sous-total de la rangée
}
f[c+n-1].value = nbr2txt(sstot); // affichage du total général
}

</script>

<style type="text/css">
form { width: 700px; }
tr th:first-child, tr td:first-child { text-align: right; }
th, td { text-align: center }
input { width: 10em; text-align: center }
input:focus { background: #ff8 }
th input, tfoot td input { border: solid 2px red; background: #eee }
tfoot th input { border: solid 2px blue; background: #eee }
</style>

<form name="form1">
<fieldset>
<legend>[<strong>NB d'adh&eacute;rents</strong>] Saison
Ecoul&eacute;e 2006-2007</legend>
<table width="100%" border="0">
<thead>
<tr>
<th>&nbsp;</th>
<th>Maurepas</th>
<th>Autres communes</th>
<th>Total</th>
</tr>
</thead>
<tbody>
<tr>
<td height="26" >Adultes</td>
<td><input tabindex="1" name="last_adultes_maurepas"
onchange="ajou(this)" /></td>
<td><input tabindex="2" name="last_adultes_autre"
onchange="ajou(this)" /></td>
<th><input name="totalfinal01_adulte" readonly="true"
id="totalfinal01_adulte"/></th>
</tr>
<tr>
<td>De 12 &agrave; 18 ans</td>
<td><input tabindex="3" name="_last_ado_maurepas"
onchange="ajou(this)"/></td>
<td><input tabindex="5" name="last_ado_autre"
onchange="ajou(this)"/></td>
<th><input name="totalfinal01_18" readonly="true"
id="totalfinal01_18"/></th>
</tr>
<tr>
<td>Moins de 12 ans</td>
<td><input tabindex="6" name="_last_enfant_maurepas"
onChange="ajou(this)"/></td>
<td><input tabindex="7" name="last_enfant_autre"
onchange="ajou(this)" /></td>
<th><input name="totalfinal01_12" readonly="true"
id="totalfinal01_12"/></th>
</tr>
</tbody>
<tfoot>
<tr>
<th>TOTAL</th>
<td><input name="total_maurepas" readonly="true"/></td>
<td><input name="total2" readonly="true"/></td>
<th><input name="totalglobal01" readonly="true"
id="totalglobal01"/></th>
</tr>
</tfoot>
</table>
</fieldset>

</form>
</html>



Attention !
Pour que ça fonctionne :
bien respecter le balisage tbody thead tfoot
tabindexer depuis le premier input ?
chaque tabindex doit être unique
Erreur dans la page d'origine :
des éléments de form sont en-dehors du form
Le code général un peu surabondant :
plein de divs inutiles
de même que des 'strong' facilement remplaçables par des th
les sizes des inputs
les styles individuels qu'on retrouve à plusieurs endroits

--
sm

Avatar
DamDamDeo
On 10 mai, 17:15, SAM
wrote:



Voici donc à adapter avec la page du form


et voici adapté :

<html>
<meta http-equiv="content-type" content="text/html; charset=iso-8859 -1">

<script type="text/javascript">

function purge(nbre) {
nbre = nbre.replace(',','.');
nbre = nbre.replace(/([^0-9 ^.]|.{2,5}|s)/g,'');
return nbre*1; // on renvoie un nombre

}

function nbr2txt(n) {
return n.toString().replace('.',',');

}

function ajou(quoi) {
    // trouver le table contenant l'élément 'quoi'
var f = quoi.parentNode;
while(f.tagName != 'TABLE') f = f.parentNode;
    // en extraire le nbre de rangées du tbody
var r = f.getElementsByTagName('TBODY')[0];
     r = r.getElementsByTagName('TR').length+1;
     // collection des inputs voulus
f = f.getElementsByTagName('INPUT');
var c = f.length;
var n = c/r;
     // correction des nombres de rangées et colonnes
c = +c-n;   // toutes cellules sauf celles de dernière rangée
r = +r-1;   // toutes cellules de rangée sauf dernière
     // tableau des totaux par colonne
var tot = [];
     // création des totaux par colonnes (totaux mis à zéro)
     // la dernière colonne (total de la rangée) est ignorée
for(var i=0; i<n-1; i++) { tot[i] = 0; }
    // pour le sous-total de la rangée
var sstot = 0;

     // boucle avec un pas de n (boucle sur les rangées)
for(var i=0; i<c; i=i+n) {
        sstot = 0;   // le sous-total de la rangée est mis à zéro
            // boucle sur les inputs de la rangée
        for(var j=0; j<(n-1); j++) {
                tot[j] += purge(f[+i+j].value);    / / total de la colonne
                sstot += purge(f[+i+j].value);     / / total de la rangée
                }
        f[+i+n-1].value = nbr2txt(sstot);     // affichage t otal rangée
        }

        // la dernière rangée, celle des totaux
sstot = 0;
for(var i=0; i<n-1; i++) {            // boucle sur les inpu ts de la rangée
        f[c+i].value = nbr2txt(tot[i]);    // affichage du t otal de la colonne
        sstot += tot[i];                   // sous-total de la rangée
        }
f[c+n-1].value = nbr2txt(sstot);      // affichage du total gén éral

}

</script>

<style type="text/css">
form { width: 700px; }
tr th:first-child, tr td:first-child { text-align: right; }
th, td { text-align: center }
input { width: 10em; text-align: center }
input:focus { background: #ff8 }
th input, tfoot td input { border: solid 2px red; background: #eee }
tfoot th input { border: solid 2px blue; background: #eee }
</style>

<form name="form1">
<fieldset>
    <legend>[<strong>NB d'adh&eacute;rents</strong>] Saison
Ecoul&eacute;e 2006-2007</legend>
    <table width="100%"  border="0">
       <thead>
         <tr>
           <th>&nbsp;</th>
           <th>Maurepas</th>
           <th>Autres communes</th>
           <th>Total</th>
         </tr>
       </thead>
       <tbody>
         <tr>
           <td height="26" >Adultes</td>
           <td><input tabindex="1" name="last_adultes_maur epas"
onchange="ajou(this)" /></td>
           <td><input tabindex="2" name="last_adultes_autr e"
onchange="ajou(this)" /></td>
           <th><input name="totalfinal01_adulte" readonly= "true"
id="totalfinal01_adulte"/></th>
         </tr>
         <tr>
           <td>De 12 &agrave; 18 ans</td>
           <td><input tabindex="3" name="_last_ado_maurepa s"
onchange="ajou(this)"/></td>
           <td><input tabindex="5" name="last_ado_autre"
onchange="ajou(this)"/></td>
           <th><input name="totalfinal01_18" readonly="tru e"
id="totalfinal01_18"/></th>
         </tr>
         <tr>
           <td>Moins de 12 ans</td>
           <td><input tabindex="6" name="_last_enfant_maur epas"
onChange="ajou(this)"/></td>
           <td><input tabindex="7" name="last_enfant_autre "
onchange="ajou(this)" /></td>
           <th><input name="totalfinal01_12" readonly="tru e"
id="totalfinal01_12"/></th>
         </tr>
       </tbody>
       <tfoot>
         <tr>
           <th>TOTAL</th>
           <td><input name="total_maurepas" readonly="true "/></td>
           <td><input name="total2" readonly="true"/></td>
           <th><input name="totalglobal01" readonly="true"
id="totalglobal01"/></th>
         </tr>
       </tfoot>
    </table>
  </fieldset>

</form>
</html>

Attention !
Pour que ça fonctionne :
    bien respecter le balisage tbody thead tfoot
    tabindexer depuis le premier input ?
    chaque tabindex doit être unique
Erreur dans la page d'origine :
    des éléments de form sont en-dehors du form
Le code général un peu surabondant :
    plein de divs inutiles
    de même que des 'strong' facilement remplaçables par des th
    les sizes des inputs
    les styles individuels qu'on retrouve à plusieurs endroits

--
sm


Merci,
c'est nikel !
P'têtre qu'un jour j'arriverais à faire tout ça tout seul (on ne sais
jamais :D )

en attendant, voici ce que ça donne :
http://pagesperso-orange.fr/pasdenomdesite/formulaire_omlc/formu_omlc.html
(j'ai fais un peu de nettoyage dans le code, mais il m'en reste encore
pas mal à faire)

Merci encore ;)


Avatar
SAM
On 10 mai, 17:15, SAM
wrote:

Attention !
tabindexer depuis le premier input ?
chaque tabindex doit être unique
Erreur dans la page d'origine :
des éléments de form sont en-dehors du form
Le code général un peu surabondant :
plein de divs inutiles
de même que des 'strong' facilement remplaçables par des th
les sizes des inputs
les styles individuels qu'on retrouve à plusieurs endroits


Merci,
c'est nikel !
P'têtre qu'un jour j'arriverais à faire tout ça tout seul (on ne sais
jamais :D )


Le problème est que tu sembles ramasser du code JS et en mettre de
partout, pour toutes sortes de "besoins" pas toujours bien cernés, comme
par exemple :
le coup : toutes les touches sauf chiffres sont bloquées
C'est très très chiant de ne plus pouvoir se déplacer par la touche
Tabulation :-(

Le menu déroulant du bas (en pas français) ...
est-ce vraiment nécessaire de doubler le menu normal ?

en attendant, voici ce que ça donne :
http://pagesperso-orange.fr/pasdenomdesite/formulaire_omlc/formu_omlc.html
(j'ai fais un peu de nettoyage dans le code, mais il m'en reste encore
pas mal à faire)


Y a une fôte : 'Attibués' en four

Je pense que lorsque ce sera fini d'y mettre des champs, ce sera bien de
mettre un tabindex à ceux à remplir en respectant l'ordre de progression
du remplissage.

Merci encore ;)


Il reste encore à faire les additions dans recettes et dépenses et ...
... leur ventilation dans le récapitulatif :-)

--
sm


Avatar
DamDamDeo
On 11 mai, 11:45, SAM
wrote:





On 10 mai, 17:15, SAM
wrote:

Attention !
    tabindexer depuis le premier input ?
    chaque tabindex doit être unique
Erreur dans la page d'origine :
    des éléments de form sont en-dehors du form
Le code général un peu surabondant :
    plein de divs inutiles
    de même que des 'strong' facilement remplaçables par des th
    les sizes des inputs
    les styles individuels qu'on retrouve à plusieurs endroits


Merci,
c'est nikel !
P'têtre qu'un jour j'arriverais à faire tout ça tout seul (on ne s ais
jamais :D )


Le problème est que tu sembles ramasser du code JS et en mettre de
partout, pour toutes sortes de "besoins" pas toujours bien cernés, comme
par exemple :
le coup : toutes les touches sauf chiffres sont bloquées
C'est très très chiant de ne plus pouvoir se déplacer par la touche
Tabulation :-(


Ha, pourtant moi ça marche bien... étrange...



Le menu déroulant du bas (en pas français) ...
est-ce vraiment nécessaire de doubler le menu normal ?


Oui, il va dégagé, ne restera plus que des lien "étape suivante/
précédente"


en attendant, voici ce que ça donne :
http://pagesperso-orange.fr/pasdenomdesite/formulaire_omlc/formu_omlc...
(j'ai fais un peu de nettoyage dans le code, mais il m'en reste encore
pas mal à faire)


Y a une fôte : 'Attibués' en four


Merki ;)

Je pense que lorsque ce sera fini d'y mettre des champs, ce sera bien de
mettre un tabindex à ceux à remplir en respectant l'ordre de progressi on
du remplissage.



Oui c'est en préparation.

Merci encore ;)


Il reste encore à faire les additions dans recettes et dépenses et ...
... leur ventilation dans le récapitulatif :-)


Tout à fait.

--
sm- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -




Avatar
DamDamDeo
On 11 mai, 11:45, SAM
wrote:





On 10 mai, 17:15, SAM
wrote:

Attention !
    tabindexer depuis le premier input ?
    chaque tabindex doit être unique
Erreur dans la page d'origine :
    des éléments de form sont en-dehors du form
Le code général un peu surabondant :
    plein de divs inutiles
    de même que des 'strong' facilement remplaçables par des th
    les sizes des inputs
    les styles individuels qu'on retrouve à plusieurs endroits


Merci,
c'est nikel !
P'têtre qu'un jour j'arriverais à faire tout ça tout seul (on ne s ais
jamais :D )


Le problème est que tu sembles ramasser du code JS et en mettre de
partout, pour toutes sortes de "besoins" pas toujours bien cernés, comme
par exemple :
le coup : toutes les touches sauf chiffres sont bloquées
C'est très très chiant de ne plus pouvoir se déplacer par la touche
Tabulation :-(




pour régler le pb de tabulation (qui marche bien sous ie mais pas sous
ff),

j'ai voulu remplacer ça :

function chiffres(event) {
// Compatibilité IE / Firefox
if(!event&&window.event) {
event=window.event;
}
// IE
if(event.keyCode > 48 || event.keyCode > 57) {
event.returnValue = false;
event.cancelBubble = true;
}
// DOM
if(event.which < 48 || event.which > 57) {
event.preventDefault();
event.stopPropagation();
}
}

par ça :

function chiffres(event) {
if(event.keyCode > 31 && (event.keyCode < 45 || event.keyCode > 57)) {
event.returnValue = false;
}

if(event.which > 31 && (event.which < 45 || event.which > 57))
return false;
}

mais bizarement ça fonctionne pas...
(sauf si je le mets directement dans l'input comme ça :
onKeypress="if(event.keyCode > 31 && (event.keyCode < 45 ||
event.keyCode > 57)) event.returnValue = false; if(event.which > 31 &&
(event.which < 45 || event.which > 57)) return false;"

Un dernier petit coup de main ?



Avatar
DamDamDeo
On 11 mai, 12:43, DamDamDeo wrote:
On 11 mai, 11:45, SAM
wrote:






On 10 mai, 17:15, SAM
wrote:

Attention !
    tabindexer depuis le premier input ?
    chaque tabindex doit être unique
Erreur dans la page d'origine :
    des éléments de form sont en-dehors du form
Le code général un peu surabondant :
    plein de divs inutiles
    de même que des 'strong' facilement remplaçables par des th
    les sizes des inputs
    les styles individuels qu'on retrouve à plusieurs endroits


Merci,
c'est nikel !
P'têtre qu'un jour j'arriverais à faire tout ça tout seul (on ne sais
jamais :D )


Le problème est que tu sembles ramasser du code JS et en mettre de
partout, pour toutes sortes de "besoins" pas toujours bien cernés, com me
par exemple :
le coup : toutes les touches sauf chiffres sont bloquées
C'est très très chiant de ne plus pouvoir se déplacer par la touch e
Tabulation :-(


pour régler le pb de tabulation (qui marche bien sous ie mais pas sous
ff),

j'ai voulu remplacer ça :

function chiffres(event) {
        // Compatibilité IE / Firefox
        if(!event&&window.event) {
                event=window.event;
        }
        // IE
        if(event.keyCode > 48 || event.keyCode > 57) {
                event.returnValue = false;
                event.cancelBubble = true;
        }
        // DOM
        if(event.which < 48 || event.which > 57) {
                event.preventDefault();
                event.stopPropagation();
        }

}

par ça :

function chiffres(event) {
if(event.keyCode > 31 && (event.keyCode < 45 || event.keyCode > 57)) {
event.returnValue = false;

}

if(event.which > 31 && (event.which < 45 || event.which > 57))
return false;

}

mais bizarement ça fonctionne pas...
(sauf si je le mets directement dans l'input comme ça :
onKeypress="if(event.keyCode > 31 && (event.keyCode < 45 ||
event.keyCode > 57)) event.returnValue = false; if(event.which > 31 &&
(event.which < 45 || event.which > 57)) return false;"

Un dernier petit coup de main ?- Masquer le texte des messages précéde nts -

- Afficher le texte des messages précédents -



Bon bah je me répond à moi même,
la réponse c'est :

<script type='text/javascript'>
function chiffres(event) {
// Compatibilité IE / Firefox
if(!event&&window.event) {
event=window.event;
}
// IE
if(event.keyCode > 31 && (event.keyCode < 45 || event.keyCode > 57))
{
event.returnValue = false;
event.cancelBubble = true;
}
// DOM
if(event.which > 31 && (event.which < 45 || event.which > 57)) {
event.preventDefault();
event.stopPropagation();
}
}



</script>




1 2