
Envoyé par
javatwister
pourrais-tu rappeler les infos suivantes:
==> Tu as plusieurs champs soumis à la même vérif?
==> Tu censures quels caractères?
1- oui 2 actuellement mais il pourrait y en avoir 50 
2- tous les car. qui ne sont pas alphanum. Sont OK : A->Z (maj. et min.) et de 0->1.
J'ai avancé :
JS :
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
| var globKeycode ;
function getEvent(e,evElement) {
if( !e ) {
//if the browser did not pass the event information to the
//function, we will have to obtain it from the event register
if( window.event ) {
//DOM
e = window.event;
// return e ;
} else {
//TOTAL FAILURE, WE HAVE NO WAY OF REFERENCING THE EVENT
return;
}
}
if( typeof( e.which ) == 'number' ) {
//NS 4, NS 6+, Mozilla 0.9+, Opera, Firefox 1.0+
globKeycode = e.which;
} else if( typeof( e.keyCode ) == 'number' ) {
//IE, NS 6+, Mozilla 0.9+
globKeycode = e.keyCode;
} else if( typeof( e.charCode ) == 'number' ) {
//also NS 6+, Mozilla 0.9+
globKeycode = e.charCode;
} else {
return;
}
}
function submitOnEnter()
{
if (globKeycode==13) alert("On soumet le formulaire") ;
}
function checkChar2(zone)
{
if ( (globKeycode==8) || (globKeycode==9) || (globKeycode==46) ||
(globKeycode==32) || (globKeycode==35) || (globKeycode==36) ||
(globKeycode==37) || (globKeycode==39) || (globKeycode==45) ||
(globKeycode==13) || (globKeycode>=65 && globKeycode<=90) ||
(globKeycode>=96 && globKeycode<=105) )
return true ;
else
{
zone.value = zone.value.substring(0,zone.value.length-1) ;
return false;
}
} |
Dans le HTML :
<input size="15" maxlength="15" id="Prenom" name="Prenom" onKeyDown="getEvent(arguments[0],this);checkChar2(this);submitOnEnter();">
Ca marche SAUF .... !
Je stocke bien la valeur de la touche enfoncée.
Je ne récupère plus l'évènement dans l'ensemble du doc, dc je n'ai plus de préséance de JS sur le code Inline.
Si le car. est interdit, je prends la chaine et je vire le dernier car.
Tout semble bon SAUF qu'il reste une préséance 
En effet, le fait de "taper" déclenche les évènements dans le OnKeyDown, mais l'ajout du caractère tapé ne se fait qu'à postériori !!!!!
Du coup, je supprime le dernier caractère de la chaine précédente qui lui est valide, puis le mauvais car. est pris en compte : ex : prénom= françois, le ç est interdit !
fran => je tape ç => INTERDIT => fra => fraç !
Je déporte mon checkChar2 sur le onkeyup. Ca marche mais avec des effets de bord pas croyable et surtout le car. interdit apparait un court instant.
Pourquoi cet abruti de FFX ne comprend pas le FALSE (idée initiale qui marche chez IE) alors qu'en plus, il n'imprime le car. qu'en dernier lieu ? Là je me retrouve dans la pire des situations :pas de prise en compte du "return false + frappe effective après l'évènement.
En conclusion :
J'ai quand même bien avancé même si je bloque sur la dernière marche.
J'ai l'impression qu'un tel usage n'est tout simplement pas possible dans FFX, qu'il va falloir que je chance mon fusil d'épaule, càd procéder à un test des carac. interdits sur la validation. Dans le fond, c'est pas la mort, mais je trouve (et je suis pas le seul ici
) que c'est une régression par rapport à l'existant.
Partager