Trim, removespace, pattern mail, pattern téléphone, pattern date...

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 048 fois - Téléchargée 16 fois

Contenu du snippet

Histoire de faire une piqure de rappel sur les contrôles de surface côté client, deux ou trois utilitaires.

Source / Exemple :


<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
	<head>
		<title>contrôle date basic</title>
		<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
		<script type="text/javascript" charset="utf-8">
			// <![CDATA[
	
			function extendProperties(obj, extension) {
				for(var property in extension) {
					extension.hasOwnProperty(property) && !obj[property] ? obj[property] = extension[property] : false;
				}
				return obj;
			}
			extendProperties(String.prototype, {
				mail:function() {
					var reg = /^.+@.+\.([a-z]{2,})$/i;
					return reg.test(this) ? true : false;
				},
			
				phone:function() {
					var reg = /^[\+{1} ?]\d{7,}$/;
					return reg.test(this) ? true : false;
				},
			
				trim:function() {
					var regstart = /^[^\s]+/g;
					var regend = /[^\s]+$/g;
					return this.replace(regstart, '').replace(regend, '');
				},
			
				removespace:function() {
					var reg = /[ ]+/g;
					return this.replace(reg, '');
				},
			
				date:function() {
					var v = true;
					var m = [31,28,31,30,31,30,31,31,30,31,30,31];
					var e = /^([\d]{2}\/){2}\d{4}$/;
					var vs = this.split('/');
					v = e.test(this) ? (parseInt(vs[1]) > 12 || parseInt(vs[1]) < 1 ? false : ((parseInt(vs[1]) != 2) ? (parseInt(vs[0]) > m[parseInt(vs[1])-1] ? false : true) : (parseInt(vs[0]) > (vs[2]%4 == 0 ? m[1]+1 : m[1]) ? false : true))) : false;
					return v;
				}
			});
			//]]>
		</script>
		<style type="text/css">

  • {
font-family: Courier; font-size: .8em; } label * { white-space: pre-line; } </style> </head> <body> <form action="#"> <p> <label for="mail"> Mail : you@domain.com ---- <input type="text" name="mail" id="mail" /> </label> <button type="button" onclick="alert(document.getElementById('mail').value.mail() ? 'mail OK' : 'mail KO')">mail()</button> </p> <p> <label for="phone"> Phone : +3312345... ------ <input type="text" name="phone" id="phone" /> </label> <button type="button" onclick="alert(document.getElementById('phone').value.phone() ? 'phone OK' : 'phone KO')">phone()</button> </p> <p> <label for="date"> Date : dd/mm/yyyy -------- <input type="text" name="date" id="date" /> </label> <button type="button" onclick="alert(document.getElementById('date').value.date() ? 'date OK' : 'date KO')">date()</button> </p> <p> <label for="trim"> Trim : ------------------- <input type="text" name="trim" id="trim" value=" toto lala titi c " /> </label> <button type="button" onclick="document.getElementById('trim').value = document.getElementById('trim').value.trim()">trim()</button> </p> <p> <label for="removespace"> Removespace : ------------ <input type="text" name="removespace" id="removespace" value=" toto lala titi c " /> </label> <button type="button" onclick="document.getElementById('trim').value = document.getElementById('trim').value.removespace()">removespace()</button> </p> <button type="reset">reset form</button> </form> </body> </html>

Conclusion :


A intégrer dans des fonctions de submit sans toutefois oublier les contôles serveurs... :)

A voir également

Ajouter un commentaire

Commentaires

MuslimTanger
Messages postés
5
Date d'inscription
jeudi 16 décembre 2010
Statut
Membre
Dernière intervention
18 janvier 2011
-
c trésssssss bien
pegos
Messages postés
2
Date d'inscription
jeudi 6 mars 2008
Statut
Membre
Dernière intervention
26 octobre 2009
-
Re Autant pour moi, j'ai été trop vite.
Une année est bissextile si divisible par 4 mais par par 100 à moins qu'elle soit divisible par 400 !
On a donc:
v = e.test(this) ? (parseInt(vs[1]) > 12 || parseInt(vs[1]) < 1 ? false : ((parseInt(vs[1]) != 2) ? (parseInt(vs[0]) > m[parseInt(vs[1])-1] ? false : true) : (parseInt(vs[0]) > ((vs[2]%4 == 0 && vs[2]%100 != 0)||vs[2]%400 == 0 ? m[1]+1 : m[1]) ? false : true))) : false;

Mille excuses.
PEGOS
pegos
Messages postés
2
Date d'inscription
jeudi 6 mars 2008
Statut
Membre
Dernière intervention
26 octobre 2009
-
Bonjour,
Sauf erreur de ma part pour la vérif de date, une année est bissextile si elle est divisible par 4 mais pas par 400.
On a donc:
v = e.test(this) ? (parseInt(vs[1]) > 12 || parseInt(vs[1]) < 1 ? false : ((parseInt(vs[1]) != 2) ? (parseInt(vs[0]) > m[parseInt(vs[1])-1] ? false : true) : (parseInt(vs[0]) > (vs[2]%4 == 0 && vs[2]%400 != 0 ? m[1]+1 : m[1]) ? false : true))) : false;

A+
PEGOS
astro53
Messages postés
48
Date d'inscription
jeudi 18 octobre 2007
Statut
Membre
Dernière intervention
5 août 2009
-
Salut LaboTemplates, je viens de lire ton code et les commentaires.
Je cite: "Ayant mis le code en catégorie débutant, ça serait bien qu'un débutant comprenne le code à minima, donc découpage...". Malgre un niveau correct que j ai en javascript je n arrive pas a comprendre une partie de son contenue.
Je ne trouve vraiment pas que ce genre de function soit a un niveau debutant puisque je ne saurais pas ecrire un truc pareil. Donc bravo je vais essayer de comprendre ca en recherchant qu est ce que Sting et qu est ce que property et qu est ce que String.property. Si j ai bien compris String.property est un array vu que tu ecris obj[property] mais a part ca je n ai aucune idee de quel est cette valeur. C est le noir total.
Bref si tu pouvais m'eclairer sur tout ca je t en remercie d'avance et si tu peux modifie ca en niveau intermediaire. Parce que c est pas un debutant comme moi qui pourtant peut creer des menus dynamiques en javascript ou autre du genre, qui peut comprendre ca facilement.

A bientot
Astro
cs_Kimjoa
Messages postés
264
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
19 septembre 2014
-
re labotemplates !
alors concernant le trim, ok mais le mieux, même pour un débutant c'est le découpage niveaux regexp na {;o)

concernant le hasOwnProperty, j'ai recherché vite fais sur google , des problèmes de comptabilité, mais j'en ait pas trouvé :( ...j'ai pas du faire la nuance entre son rôle, qui pose problème , et son implémentation par les navigateurs :( .... , mais c'est là le probleme, c'est son rôle, quand on utilise cette fonction, on demande à l'objet toutes ses variable définit par sa classes de base, ou implémenté (écrite ou réécrite) par l instance, hors, elle n 'a pas lieux d étre dans ton teste ... pk vouloir passé absolument juste les propriété qui ne sont pas hérité?? ... si t'a un ptit niveau programmation orienté OO, tu comprendra, mais c'est vrai que pour un noob en js, le nom de la fonction peux porté à confusion..

concernant le arobase dans le nom d'utilisateur, lool , ouais un groupe sur facebook si tu veux !! mais c'est pour ça que je t ai laissé le "loisir" de la tester dans toute les situation, t'as regexp, hé là , tu me contredira pas que c'ets la galère!! ;)

Pour le phone, et la date , si tu le dit !! , j 'irais pas vérifié, mais , je voulais juste savoir ou tu en étais :)

sinon , veux quand même appuyer sur le faite que tes regexp, devrais être des constantes, même si elle mette 0.1 millisecondes a être évalue, c'est juste un problème de méthodologie, ...

voilà , voilà chacun à sa façon de parler, mais il dois toujours pouvoirs écouter les autres :)

bye!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.