11499 sujets

JavaScript, DOM et API Web HTML5

Salut à tous,

Je suis entrain de me prendre la tête pour automatiser un champs input qui valide la new norme des plaques Française.

Ce que j'aimerais rajouter à ce que j'ai dans mon script et tout bêtement les "-" automatiquement lorsque la personne a tapé les 2eres lettres, puis les 3 chiffres.

La actuellement il faut que la personne tape le - pour aller à la suite (ce n'est pas forcément très ergonomique)

par exemple : AA - 123 - AA

Voici le jsfiddle pour ceux qui arriverait à m'aider


Merci de votre aide
Modifié par artsx (26 Jun 2013 - 15:40)
Bonjour,
Ton problème a l'air super intéressant et j'aimerais bien chercher un peu, mais je ne connais pas du tout jsfiddle... est ce que si je lance mon code édité par moi-même, ça va écraser le code pour tout le monde, ou seulement chez moi?
Salut,

Merci de vouloir m'aider !

Nan tu peux y aller, tu peux modifier à ta sauce, qd tu vas cliquer sur "save" ça va te générer un nouveau lien avec ta correction à toi. Ca n'écrasera pas le mien.

Ensuite si tu veux tester ton code tu peux juste cliquer sur "Run" et ça mettra tes corrections en directe sans que ça crée un lien. (Je sais pas si j'ai été clair ?!)

En gros non tu peux y aller Smiley langue
Modifié par artsx (26 Jun 2013 - 16:33)
Merci, j'avais bien compris que je pouvais y aller ^^
Voici un premier jet, je ne sais pas si ça peut t'aider: si la longeur de la chaine vaut 2 ou 6, on rajoute un tiret, sauf si la touche sur laquel on a appuyé avant est le backspace (keyCode=8), afin de pouvoir effacer convenablement en cas d'erreur.
C'est améliorable je pense, mais c'est un début.

http://jsfiddle.net/MbQRJ/3/

EDIT: remplacement du lien, je m'étais planté ^^
Modifié par GroquikMLV (26 Jun 2013 - 16:48)
Oui j'ai vu, j'avais pas pigé que je devais faire un "update" avant de faire le share... Comme je te l'ai dit, je connaissais pas du tout jsfiddle avant (mais je trouve le concept super!)
Tant mieux alors Smiley smile
Comme je te l'ai dit, je pense qu'en réfléchissant un peu mieux ça doit être améliorable, mais bon, au moins ça marche ^^
Quelle version? Je viens de tester sur IE9, ça fonctionne... Il doit surement y avoir un truc qui ne passe pas. Est ce que le code d'origine que tu m'as fourni fonctionnait correctement sur IE?
nop toujours pas, il m'enchaine les caractères à la suite, j'ai testé le var =.....
sans résultat non plus
Est ce que tu testes directement dans jsfiddle, ou dans ton fichier local? Si c'est le cas, je pourrais voir le code d'appel de la fonction?
je test directement via mon fichier local.

<input type="text"  id="plates" placeholder="AA-123-AA" onkeyup="envoilabel()" pattern="^[A-Z]{2} ?- ?\d{3} ?- ?[A-Z]{2}$" />


$(document).ready(function(){
	function check(s) {
	    var toks = s.split('-');
	    //console.log(toks);
	    switch(toks.length){
	        case 3:
	        if (!/^[A-Za-z]{0,2}$/.test(toks[2].trim())) return false;
	        case 2:
	        if (!/^\d{0,3}$/.test(toks[1].trim())) return false;
	        case 1:
	        return /^[A-Za-z]{0,2}$/.test(toks[0].trim());
	        default:
	        return false;
	    }
	}
	var oldvalue = '';
	$('#plates').keyup(function(e){
	    if (!check(this.value)) {
	        this.value = oldvalue;
	    } else {
	        oldvalue = this.value = this.value.toUpperCase();
	    }
	    if (!e) {
	        e = window.event;  // Get event details for IE
	        e.which = e.keyCode; // assign which property (so rest of the code works using e.which)
	    }
	    if((this.value.length==2 || this.value.length==6) && (e.keyCode!=8)){
	            this.value=this.value+"-";
	    }
	});

});
Je viens de lire qu'IE gérait différemment la détection de la touche backspace. Il y a pas mal de sites qui en parlent, mais pour le moment je ne peux pas t'aider plus que ça, je n'utilise jamais IE et je n'ai pas de vieille version installée... Mais rassure-toi, beaucoup de personnes qui proposent des trucs pour contourner la chose apparemment, tu devrais finir par trouver ton bonheur.

En attendant de trouver une solution, tu peux toujours supprimer le test du keyCode, mais ça sera un peu galère pour effacer les données en cas d'erreur Smiley ohwell
merci pour ton aide en tout cas, je règlerais ça par la suite, je reviendrais ici pour poster la solution.