Forum Clubic

Masque de saisie

Bonsoir,

j’aimerais savoir qu es ce que vous utilisez pour faire des masque de saisie?

En effet, dans mon cas il me faudrait un systeme qui empeche l’utilisateur de faire n’importe en quoi en l’occurrence un numéro de téléphone en xx xx xx xx xx au lieu de xx.xx.xx.xx.xx ou xxxxxxxxxx etc etc.

Pareil pour numéro de fax.

Je pensais avoir trouvé un script (http://www.javascriptfr.com/codes/MASKEDIT-MASQUES-SAISIE-DATES-NOMBRES-CHAINES_17339.aspx) mais malheureusement je n’arrive pas a le faire marcher.

Autre question plus ouverte:
Comment limiter vous les formulaires et ainsi contenir les “erreurs” potientielles de saisie des utilisateurs?

merci
Edité le 12/12/2007 à 17:24

voici ce que j’utilise en php :

if(!preg_match("^[0-9. ]{10,14}$", $phone))
{
//code pour la gestion d’erreur.
}

Perso, je leur laisse le choix de taper le numéro avec des points, et après je remplace avec une fonction :
$phone = str_replace(’.’,’’,$phone);
(Mon code n’est pas le meilleur puisqu’un xxxxxxxxxx… passerait … mais bon, on peut jamais être sur que le numéro soit vraiment bon.
Pour que le numéro soit strictement comme tu la afficher :

if(!preg_match("^[0-9 ]{2} [0-9 ]{2} [0-9 ]{2} [0-9 ]{2} [0-9 ]{2}$", $phone))
{
//code pour la gestion d’erreur.
}

Pour tout les autres champs du formulaire, tu procède de la même façon.
Par exemple, pour l’email, il faut vérifier la présence d’un .com (ou .quelque_chose), et aussi l’ @

Voila pour ce qui est du php, pour la javascript, le principe reste le même, il y a juste le nom des fonctions qui changes

le problème avec le php (cest pour cela que je m’orientais sur le javascript, c(est de pouvoir sur une action style onchange controler en temps “reel” le champs

car sinon on est obligé de valider pour voir qu il ya un problème

je fais certaines vérifs (en particulier unicité) lors de la validation, mais j’aimerais que les erreurs “simple” puissent etre détecter de suite.

J’ai vraiment besoin que les numéros aient une forme bien spécifique a cause d’un logiciel de remontée de fiche qui a besoin de ce format pour fonctionner…et puis ausi je trouve ca aussi plus clair ainsi

mais ton systeme fonctionne pas mal…c’est possible que malgré tout je l’applique…par contre je vais devoir faire des subtr_replace en pagaille…car les utilisateurs peuvent faire ‘.’, comme des ‘,’ ou des ‘-’ et que sais je encore…(j ai vu ca dans la bdd…)

après pour les espaces au pire il me suffit de supprimer les espaces et de les recreer par tranches de 2

Ben tu fais la même chose que manu2 avec des regexp en javascript.

www.commentcamarche.net…

:slight_smile:

c’est nickel ce que tu m as donné + le coup de main de manu:

en effet en appliquant sur un onchange() ce script:

tout fonctionne parfaitement :wink:

merci bien tout le monde :slight_smile:
Edité le 13/12/2007 à 10:26

Les regexp peuvent être écrites directement :

var form = new RegExp( “([0-9]{2})+ +([0-9]{2})+ +([0-9]{2})+ +([0-9]{2})+ +([0-9]{2})”,“gi” );

==

/(\d{2})+ (\d{2})+ (\d{2})+ (\d{2})+ (\d{2})+/gi

Voir:

/^\s*(\d{2})+\s+(\d{2})+\s+(\d{2})+\s+(\d{2})+\s+(\d{2})+\s*$/gi

Si tu veux un match respectueux du fait que l’utilisateur peut taper plusieurs espaces (tu peux les virer après, etc).

oui effectivement j ai decouvert après qu il y avait des alias.

d’ailleurs justement je suis entrain de bosser sur un qui me donne du fil a retordre:

la regex que voici (\w)+ est censé vérifier qi il y a que des caractères alaphanumériques dans la chaine controlée.

Pourtant des choses étranges se produisent comme par exemple:
j’ envoi:
,nghgh-hg et il me repond (si je fais un alert du résultat du regex) : nghgh,hg

sincèrement si quelqu’un pouvait m’expliquer car la je ne comprends pas du tout!

merci

Là, j’ai pas de réponses :slight_smile:

Fait péter un script de test au hasard?

le script complet:


function control_modele()
	{
	modele= document.getElementById('modele').value;
	alert(modele);
	var form = new RegExp("(\\w)+","gi" );
	var contr=modele.match(form);
	alert(contr);
	if ( contr == null)
	alert ("Le modele n'est pas valide (caractère alphanumérique uniquement) !");
	}

Modèle: (caractère de A à Z et chiffres uniquement)

sans-nom>un script de test?quel test?

Utilise plutôt

if(!maRegExp.test(maValeur))
{ 

//pas bon 

}

qui renvoit true ou false si maValeur correspond à MaRegexp si tu ne veux que vérifier le respect d’une valeur par rapport à une regexp
Edité le 13/12/2007 à 23:29

donc en suivan ton seil j ai fait ca:

function control_modele()
{
modele= document.getElementById(‘modele’).value;
alert(modele);
var form = new RegExp("(\w)+",“gi” );
var contr=modele.match(form);
alert(contr);
if(!form.test(modele))
{
alert (“Le modele n’est pas valide (caractère alphanumérique uniquement) !”);
}
}

mais rien n a fait il me repond n’importe quoi (tout sauf true ou false) et comme je disais avant il me remplace les caractères spéciaux par des virgules…


vous allez rire mais je viens de trouver ma solution en regardant un forum sur un site de quelqu'un qui posait une question sur un regex mais en appliquant l'alias \W.

et ca ma donné une idée: en effet si je n’arrive pas detecter des caractères alphanumérique dans une chaine, peut etre detecterais je l’inverse

ce qui a donné:
function control_modele()
{
modele= document.getElementById(‘modele’).value;
var form = new RegExp("(\W)+",“gi” );
var contr=modele.match(form);
if(form.test(modele))
{
alert (“Le modele n’est pas valide (caractère alphanumérique uniquement) !”);
}
}

et ce code fonctionne parfaitement