Une 'tite RegExp...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Une 'tite RegExp...

par RilaX » 18 oct. 2006, 10:37

C'est encore moi ...

bon, ca marche super tout ca tout ca, mais j'ai quand meme un tout p'tit soucis : j'aimerai que la touche entrée fonctionne, que ca permette de valider mon formulaire. Mais je n'y arrive pas.
J'avais réussi à rajouter la possibilité de mettre le point '.' mais la touche entrée se refuse obstinement à moi.

C'est bien 13 la valeur de cette touche ? Le Carriage return ? En tous cas j'ai essayé de rajouter

Code : Tout sélectionner

|| touche == 13
mais ca n'a aucun effet. Je desespere devant mon incapacité ...

pliz, help

[EDIT : apparement, ca ne vient pas de cette fonction, mais d'une autre qui me propose une liste déroulante suivant ce que j'ai tapé ... je vais bien m'amuser a trouver d'ou ca viens, moi qui suis une burne en javasclipt !]

par Invité » 11 oct. 2006, 18:54

Merci pour ta réponse !

Je pensais pas qu'il était possible de faire ça avec JS ... C'est puissant quand même !!!

Bonne soirée à tous

Petit Hors Sujet :
(Sacré équipe quand même que vous faites sur ce forum avec Truc, Charabia, Zeus, Albat et surtout Cyrano ... mais je sais que j'en oublie !
En tout cas merci à vous les Megamoth et autre Mammouth du PHP pour ce partage de vos connaissance !)

par Truc » 11 oct. 2006, 17:17

Oui le code ASCII
Pour savoir qu'elle touche à été pressée suffit d'effectuer un alert() donc un affichage sur "touche". :)

par Snoops » 11 oct. 2006, 15:52

Essai avec :
touche = (touche == 8 || touche == 0) ? 1 : !isNaN(String.fromCharCode(touche));	
Salut,

Au risque de paraître bête :
Quand tu parles du code touche ... tu parles a quel niveau ? Ce n'est pas l'équivalent ASCII ???
Javascript a son propre code touche ?
Et comment connais-tu les équivalents ?

par RilaX » 11 oct. 2006, 08:46

Ben dites donc ...
Je suis pas fier la !
Ca marche nickel chrome tip top comme je le souhaitais avec ce petit ajout. Quand je pense que c'etait si simple ... je suis vraiment une bille en javascript :lol:

En tous cas merci beaucoup Truc, sans toi je n'aurais probablement jamais trouvé.

par Truc » 10 oct. 2006, 20:49

Essai avec :
touche = (touche == 8 || touche == 0) ? 1 : !isNaN(String.fromCharCode(touche));	

par RilaX » 10 oct. 2006, 11:43

Salut,
ce petit bout de code de Truc est vraiment super !

Par contre, sans vouloir abuser, j'aimerai qu'il soit possible de tabuler pour changer de champ dans le formulaire, et la ... ben on peut pas. Et malgrès quelques essais, je ne parviens pas à comprendre le fonctionnement du script. Bon certes, en javascript je suis nul, mais je me disais que ca devait pas etre si compliqué d'autoriser la touche tabulation en plus de la touche delete. Mais apparement c'est déjà trop pour moi :?

Si quelqu'un connait une solution, ca serait super tip top ;)

par albat » 07 oct. 2006, 21:01

Le code touche "8" qui correspond à la touche "Effacement" (retour arrière :-k) :wink:
Faut pas m'en vouloir : j'ai commencé comme utilisateur.

Alors, forcément, parfois, j'ai des restes... :lol:

par Truc » 07 oct. 2006, 20:56

formate sa bécane, persuadé d'avoir chopé un virus... :shock: #-o
(Ne riez pas : je parle d'expérience)

:lol:.... Trop tard j'ai ri
Il faut penser à tout avec ces "utilisateurs" :?
la touche "8" pour pouvoir effacer :)
Là, en revanche, je suis moins séduit.
Le code touche "8" qui correspond à la touche "Effacement" (retour arrière :-k) :wink:

par albat » 07 oct. 2006, 20:48

C'est une autre possibilité et une bonne idée.

Mais le risque est que cela perturbe l'utilisateur
qui ne comprend pas pourquoi tel caractère (prohibé) ne s'affiche pas
et qui, dans le meilleur des cas, explose son clavier après l'avoir martelé comme un sourd
et dans le pire, formate sa bécane, persuadé d'avoir chopé un virus... :shock: #-o
(Ne riez pas : je parle d'expérience)
la touche "8" pour pouvoir effacer :)
Là, en revanche, je suis moins séduit.
Ça va pas être évident pour les utilisateurs dont le numéro contient un ou plusieurs 8... :langue:

par Truc » 07 oct. 2006, 20:44

Tu peux explorer la fonction isNaN() qui détecte si le paramètre passé est un chiffre ou pas.
Détection à la volée :
function chiffre(evenement)
{	
	var touche = window.event ? evenement.keyCode : evenement.which;		
	touche = (touche == 8) ? 1 : !isNaN(String.fromCharCode(touche));			
	return touche;
}
la touche "8" pour pouvoir effacer :)
<input type="text" value="" name="champ" onkeypress="return chiffre(event);">

par albat » 07 oct. 2006, 20:43

Ton Javascript fonctionne impeccablement ! =D>
(Rhâââ la la... Il est fort, ce Cyrano !) :langue:

Pour la validation, je le fais en PHP.
Après submit() du formulaire donc.

Ce que je voulais, c'était apurer en temps réel (pendant la saisie),
le numéro de tous les caractères parasites.

C'est exactement ce que j'obtiens.
Merci ! :agenouille:

You know what ? I'm happy. ;)

par Cyrano » 07 oct. 2006, 19:49

Petite proposition basique, supprimer tout ce qui n'est pas un chiffre :
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<!-- Date de création: 07/10/2006 -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Formater un numéro de téléphone</title>
<meta http-equiv="Content-language" content="FR-fr" xml:lang="fr" dir="ltr" />
<script type="text/javascript">
/* <![CDATA[ */
function validtel(num)
{
    var longueur = num.length;
    var chiffres = '0123456789';
    var nettoyage = '';
    var caractere;
    for(var i = 0; i < longueur; i++)
    {
        caractere = num.charAt(i);
        if(chiffres.indexOf(caractere) != -1)
        {
            nettoyage += caractere;
        }
    }
    document.forms['numtelform'].elements['numtel'].value = nettoyage;
}
/* ]]> */
</script>
</head>
<body>
<p>Formater un numéro de téléphone en supprimant tout ce qui n'est pas un chiffre.</p>
<form action="#" method="post" id="numtelform">
  <fieldset>
    <label><input type="text" name="numtel" id="numtel" value="" onblur="validtel(this.value);" /></label><br />
    <input type="submit" name="envoi" value="Enregistrer" />
  </fieldset>
</form>
</body>
</html>
Éventuellement tu peux rajouter une validation pour tester la longueur ou vérifier qu'il s'agit bien d'un numéro de téléphone.

par momox » 07 oct. 2006, 19:08

Il y a peut-être un équivalent du str_replace en javascript?
@+

par albat » 07 oct. 2006, 18:57

Je me suis mal fait comprendre. :?

Le but n'est pas de vérifier la validité ddu format du numéro saisi (pour cela, le PHP conviendrait très bien),
mais de le corriger en temps réel côté client avant submit du formulaire (d'où l'utilisation du javascript).

Je ne cherche donc pas à vérifier que la donnée saisie correspond au modèle [0-9]
mais à purger de la chaîne saisie, tout caractère autre ; cad tel que : a-z, A-Z, "/", ".", "-", [espace], etc.

Et là, je cale.