Appliquer regexp en fonction de choix de liste

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 : Appliquer regexp en fonction de choix de liste

par Ryle » 06 sept. 2006, 14:22

Y a pas de quoi :)

[Résolu] :?: :!:

par meta » 06 sept. 2006, 13:32

Oui c'est sur, merci de l'aide en tout cas Ryle.

par Ryle » 06 sept. 2006, 12:53

C'est une solution en effet :)

Si tu jettes un coup d'oeil à la doc, tu verras que tu peux aussi utiliser la classe [:space:], et si tu es un peu curieux, tu peux voir que le caractère espace directement fonctionne tout aussi bien ;)

Comme quoi il suffit parfois juste de chercher un peu pour trouver tout seul ce dont on a besoin :)

par meta » 06 sept. 2006, 12:38

ah, c'est bon trouvé a priori, le : "\s" ? :=)

par meta » 06 sept. 2006, 12:33

lol, c'est ce qu'on m'as dit sur un autre forum php oO. donc quelle serait la syntaxe selon toi pour un espace entre les paires de chiffres ? oO

par Ryle » 06 sept. 2006, 12:25

Je vois pas en quoi "\\." pourrait représenter un espace ? :)

par meta » 06 sept. 2006, 12:16

enfin tjs rien wé pardon, le code semble fonctionner, mais now j'aimerai bien que la regexp permette juste de saisir le numero d telephone, de cette facon la :

Code : Tout sélectionner

00 00 00 00 00
Et j'ai testé de modif par des \\. , mais sans succes :

Code : Tout sélectionner

reg = new RegExp(/[0-9]{2}\\.[0-9]{2}\\.[0-9]{2}\\.[0-9]{2}\\.[0-9]{2}/);

par Ryle » 06 sept. 2006, 12:12

Comment ça toujours rien ?
Chez moi il tourne bien ce code :)

par meta » 06 sept. 2006, 12:06

oups, je pensais avoir bien modifié, mais non tjs rien lo :
 <script>
function chiffres() {
  // si l'option selectionnée a pour valeur 67
  if (document.validation.departement.options[document.validation.departement.selectedIndex].value == 67) {

    reg = new RegExp(/[0-9]{2}.[0-9]{2}.[0-9]{2}.[0-9]{2}.[0-9]{2}/);
    if (reg.test(document.validation.attribute21.value)) {
        //un traitement quelconque
    }
    else {
      alert('Veuillez saisir le téléphone sous format 00 00 00 00 00');
      document.validation.attribute21.value = "";   
    }
  }
}
</script>

<form method="post" onSubmit="return checkbae()" action="http://localhost/lists/?p=subscribe&id=1" name="validation" target = "_self">

Pays</td>
      <td><select name="departement" id="departement">
          <option value="67">Bas-Rhin (67)</option>
          <option value="68">Haut-Rhin (6Cool</option>
        </select>


Telephone
<input type=text name="attribute21"  class="attributeinput"  size="40"  onBlur="chiffres(event)" maxLength="20" value="00 00 00 00 00" > 

par Ryle » 06 sept. 2006, 11:55

Raaah bah forcément, tu as collé du "departement" de partout !! :)

"departement" c'est ta liste déroulante et "attribute21" c'est ton champ. Quand tu dois tester ta liste il faut du "departement" et quand tu dois récupérer la valeur saisie tu utilises "attribute21" :)

Ps : A noter que si dans ton expression tu met un point sans les crochets, cela corresond à n'importe quel caractère, pas forcément le point...

par meta » 06 sept. 2006, 11:48

<script>
function chiffres() {
  // si l'option selectionnée a pour valeur 67
  if (document.validation.departement.options[document.validation.departement.selectedIndex].value == 67) {

    reg = new RegExp(/[0-9]{2}\\.[0-9]{2}\\.[0-9]{2}\\.[0-9]{2}\\.[0-9]{2}/);
    if (reg.test(document.validation.departement.value)) {
        //un traitement quelconque
    }
    else {
      alert('Veuillez saisir le téléphone sous format 00 00 00 00 00');
      document.validation.departement.value = "";   
    }
  }
}
</script>

<form method="post" onSubmit="return checkbae()" action="http://localhost/lists/?p=subscribe&id=1" name="validation" target = "_self">

Pays</td>
      <td><select name="departement" id="departement">
          <option value="67">Bas-Rhin (67)</option>
          <option value="68">Haut-Rhin (68)</option>
        </select>


Telephone
<input type=text name="attribute21"  class="attributeinput"  size="40"  onBlur="chiffres(event)" maxLength="20" value="00 00 00 00 00" >

par Ryle » 06 sept. 2006, 11:40

Doit rester une erreur dans ton code, car il n'y a pas de raison pour que cela ne fonctionne pas... fais voir le dernier en date :)

par meta » 06 sept. 2006, 10:57

lol ok, oui c etait les attribut21, et aussi le form1 qui etait resté isolé oO.

Donc la le regexp est bien pris en compte quand la valeur 67 est choisie, mais meme en mettant au format 00.00.00.00.00, quand je sors de la box a chaque fois il me dit que ce n'est pas au bon format lol oO

une idée de ce qui ne va pas ?

par Invité » 06 sept. 2006, 10:52

euh, pour tout les attribute21 il faut remplacer par departement ? je viens de tester toujours aucun effet :( . Ou est ce juste a un endroit specifique ?

par Ryle » 06 sept. 2006, 10:34

Oops mea culpa... le nom du select dans le if() n'est pas "attribute21" mais "departement" :)
(J'ai été victime d'un copier/coller malheureux ;))