IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Eviter la saisie de liens dans un formulaire


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Avatar de trx337
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2015
    Messages : 74
    Billets dans le blog
    1
    Par défaut Eviter la saisie de liens dans un formulaire
    bonjour
    je n'arrive pas à écrire une phrase de code pour éviter que quelqu'un m'envoie dans son texte un lien http.
    pour ce faire j'avais des idées et soit on dit dans le code si le mot <a> existe , envoie une alerte et reste à false ou bien idem : si le mot http existe envoie une alerte et reste à false.

    j'ai déjà une fonction qui fonctionne bien si le formulaire n'est pas rempli . le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    function VerifForm()
    {
      if (
        (document.form.messagelivre.value == "a");)
      {
        alert("veuillez ne pas écrire de lien dans le message");
        return false;
      }
      else if (
        (document.form.civi.value == "") || (document.form.prenom.value == "") || (document.form.nom.value == "") || (document.form.email.value == "") || (document.form.profil.value == "") || (document.form.messagelivre.value == ""))
      {
        alert("veuillez remplir tous les champs");
        return false;
      }
      else
      {
        return true;
      }
    }

    c'est la ligne : (document.form.messagelivre.value=="a"); qui ne va pas et que je cherche à écrire cette ligne veut dire si la lettre a est le message alors return false

    première question si on remplace la lettre a par < , eh bien il ne comprends ce symbole et là je voudrais bien savoir pourquoi ?

    deuxième question si j'écris if "http" in document.form.messagelivre; ça ne fonctionne pas. Pourtant c'est cela que je voudrais lui dire .
    et j'ai essayé de trouver des réponses et je ne sais pas comment m'y prendre pour résoudre le problème . idem pour écrire ceci :
    "<a>" in document.form.messagelivre; puisque un lien en html commence par <a>.

    merci pour votre réponse

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 417
    Par défaut
    Bonjour,

    La propriété value renvoie le contenu de l'élément du formulaire sous forme de chaine de caractères. L'opérateur in sert à tester le contenu d'un objet (tableau) il n'est donc pas approprié. On utilise la méthode search() pour faire des recherches dans une chaine de caractères. Si la recherche n'aboutit pas le résultat sera -1.

    Donc tu pourrais faire un truc dans le genre :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var champ = document.form.messagelivre.value;
    var regex = /http/g;
    if (champ.search(regex) !== -1)
    {
    // le champ contient "http"
    }

  3. #3
    Membre confirmé
    Avatar de trx337
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2015
    Messages : 74
    Billets dans le blog
    1
    Par défaut
    merci je vais essayer et pour ma question concernant le symbole < , pourquoi ne marche t il pas ?

  4. #4
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 127
    Par défaut
    Salut
    Plutôt que .value, utilise la propriété .innerHTML.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    			let docuLivre = document.getElementById("messagelivre").innerHTML;
    			if (docuLivre.indexOf("</a")!==-1) {
    				console.log("</a est contenu dans le document");
    				}else{
    				console.log("</a n'est pas contenu dans le document");
    			}
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    Citation Envoyé par ProgElecT
    Plutôt que .value, utilise la propriété .innerHTML.
    Attention :
    La propriété innerHTML ne change pas lors de la saisie dans une textarea, la valeur qui s'affichera est la valeur contenue, si existe, entre les balises à l'initialisation de la page, seule la propriété value est mise à jour.

  6. #6
    Membre confirmé
    Avatar de trx337
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2015
    Messages : 74
    Billets dans le blog
    1
    Par défaut
    merci à vous trois de m'avoir répondu et je vais revoir mon script cet après midi

    mais pouvez vous répondre : pourquoi : (document.form.messagelivre.value == "<") donc < ou &lt; ne marche pas ?

    d'autre part la console , je vais peut être vous paraître ignare mais elle s'ouvre bien avec F12 ? car avec F12 et mon easy php , elle ne fonctionne pas bien et même très mal , elle est sur le coté alors que je voudrais la mettre en dessous , et j'avais fais un stage ou elle fonctionnait et elle était en dessous et je ne sais plus comment on la met ?

  7. #7
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    document.form.messagelivre.value == "<"
    quand tu écris cela tu testes si « la totalité du contenu » de value est égale à <.

    Il te faut regarder du côté de indeOf ou l'utilisation d'une regExp comme indiqué dans les autres réponses.

  8. #8
    Membre confirmé
    Avatar de trx337
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2015
    Messages : 74
    Billets dans le blog
    1
    Par défaut
    bon ; ok ; et la console , y a t il une autre façon de l'ouvrir que F12 ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par ProgElecT Voir le message
    ...Plutôt que .value, utilise la propriété .innerHTML...
    @ProgElecT
    Non.
    Si c'est (très certainement) un <textarea>, on utilise .value.

    @trx337
    • La console : "F12" ou "clic droit" -> "Inspecter/Examiner l'élément"
    • L'afficher en bas : en haut à droite de la console : "..." -> "Ancrer en bas"

  10. #10
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 127
    Par défaut
    Salut

    Citation Envoyé par trx337
    quelqu'un m'envoie dans son texte un lien http.
    pour ce faire j'avais des idées et soit on dit dans le code si le mot <a> existe
    Oui, en effet, il est évidant que la récupération est au niveau d'un textarea

    Donc pour ce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    			let docuLivre = document.getElementById("messagelivre").value;
    			if (docuLivre.indexOf("</a>")!==-1) {
    				console.log("</a> est contenu dans le document");
    				}else{
    				console.log("</a> n'est pas contenu dans le document");
    			}
    cela reste pertinent, non?.
    Moi je préfère tester la balise fermante, car l'ouvrante pourrait être <a href='https ......
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  11. #11
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 417
    Par défaut
    Pour rejeter le message je testerais aussi l'existence de "http" et de "www" en complément ou à la place de '</a>'. En effet de nombreux spam sont construits avec des liens qui ne sont pas inclus dans une balise '<a>'. Les spammeurs anticipent sur le comportement automatique d'un système bbcode ou wysiwyg pour créer les liens, sinon peu importe les adresses sont quand même visibles en totalité et c'est ce qu'ils recherchent avant tout.

  12. #12
    Membre confirmé
    Avatar de trx337
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2015
    Messages : 74
    Billets dans le blog
    1
    Par défaut
    j'ai utilisé le code suivant et cela marche très bien mais je voudrais savoir à quoi sert le g après /http/g ?

    en tout cas merci à tous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var champ = document.form.messagelivre.value;
    var regex = /http/g;
    if (champ.search(regex) !== -1)

  13. #13
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 417
    Par défaut
    Citation Envoyé par trx337 Voir le message
    j'ai utilisé le code suivant et cela marche très bien mais je voudrais savoir à quoi sert le g après /http/g ?
    Bonne question, le "g" indique de faire une recherche globale et non pas de s'arrêter sur la première occurrence trouvée. Donc en fait tu pourrais le supprimer puisque tu ne veux aucun "http" quelque soit sa position.

    Mais il serait quand même judicieux d'utiliser un drapeau, à savoir le "i" qui permet de faire une recherche insensible à la casse, ce qui te permettrais de trouver également les "HTTP". Donc tu peux faire ainsi :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var champ = document.form.messagelivre.value;
    var regex = /http/i;
    if (champ.search(regex) !== -1)
    {
    // http ou HTTP sont inclus dans le message
    }

    Plus d'informations sur les regex ici.

  14. #14
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    je rechercherais plutot la présence de "href" ou encore de "src"; "open"
    une balise de fermeture pouvant se syntaxer avec des espaces ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  15. #15
    Membre confirmé
    Avatar de trx337
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2015
    Messages : 74
    Billets dans le blog
    1
    Par défaut
    j'ai tenu compte de ce que vous m'avez dit : voici ce que j'ai écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (
    	  document.form.messagelivre.value.search(/http/i)!==-1 || 
    	  document.form.messagelivre.value.search(/www/i)!==-1 ||
    	  document.form.messagelivre.value.search(/href/i)!==-1 || 
    	  document.form.messagelivre.value.search(/src/i)!==-1 ||	
    	  document.form.messagelivre.value.search(/open/i)!==-1	
     
    	)

  16. #16
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 489
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 489
    Par défaut
    tu peux tout ecrire en 1 fois : document.form.messagelivre.value.search(/http|www|href|src|open/i)
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  17. #17
    Membre confirmé
    Avatar de trx337
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2015
    Messages : 74
    Billets dans le blog
    1
    Par défaut
    merci

    j'ai essayé de cliquer sur le lien regex mais on tombe sur une page qui n'a pas l'air de marcher :

    https://developer.mozilla.org/fr/doc...9guli%C3%A8res

    en fait j'ai un problème de console (F12)

    j'ai deux sites à analyser : sur l'un la console fonctionne très bien .

    sur l'autre , elle est très lente . Quelqu'un a t il une idée de ce qui, peut la ralentir aussi fortement car ce ne peut etre qu'une erreur de script ?

  18. #18
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 417
    Par défaut
    Quand je clique sur le lien que tu as donné j'arrive bien à la page MDN voulue.

    Sinon il est très rare qu'une erreur de script puisse être à l'origine d'un problème d'ouverture de la console puisqu'elle est précisément conçue pour débuguer.

    Cela dit, si tu as coché la case pour conserver l'historique, elle enregistre tout en continu, et après de nombreuses requêtes il est possible que ces enregistrements successifs dépassent la capacité mémoire de ton navigateur ou de ton ordinateur et dans ce cas cela peut ralentir très sensiblement l'exécution du script ou le bloquer. Par ailleurs il peut y avoir de très grandes différences entre les scripts en terme de ressources nécessaires donc cela dépend non seulement des réglages de la console mais aussi des scripts.

    C'est tout ce qui me vient à l'idée, il est possible que tu aies une configuration matérielle un peu limitée (auquel cas il ne faut pas conserver l'historique de la console trop longtemps) et aussi quelques problèmes logiciels si tu n'arrives pas à suivre le lien que tu as indiqué.

  19. #19
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Tu peux aussi traiter avant enregistrement les chaînes contenant des séquences sans espace de type "alphanum-point-alphanum-point"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const champ=document.form.messagelivre.value.replace(/([\w]+)(\.)([\w]+)(\.)/g," $1 $2 $3 $4")
    Ceci décomposera l'adresse en 4 parties;
    Ce genre de test s'utilise aussi pour éviter les mots beaucoup trop longs qui peuvent flinguer une mise en page de forum, par exemple... Mais en général, ça se fait plutôt coté serveur.

  20. #20
    Membre confirmé
    Avatar de trx337
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2015
    Messages : 74
    Billets dans le blog
    1
    Par défaut
    merci pour ces deux messages

    tout mon travail avec vous ne porte pas ses fruits en effet sitot mis en place un message que je voulais éviter
    est réapparu . En observant ce message , il n'y a pas écrit monsieur ou madame alors qu'il était obligatoire et le script ci dessus est placé sur la partie message donc je me demande si le message n'est pas posté sur la partie email ou prénom ou nom ; bon je vois ce que j'ai à faire et donc plcer le script sur les autres parties texte

    Nom : aweb.png
Affichages : 171
Taille : 13,2 Ko

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AC-2007] Intégration d'images en lien relatif dans un formulaire continu
    Par Nephyline dans le forum IHM
    Réponses: 2
    Dernier message: 25/08/2009, 09h26
  2. [A-02] Générer un lien clicquable dans un formulaire
    Par Seb33300 dans le forum Access
    Réponses: 2
    Dernier message: 10/12/2008, 09h20
  3. Affichage lien Hypertexte dans tableau Formulaire
    Par madchemiker dans le forum IHM
    Réponses: 2
    Dernier message: 23/05/2007, 11h40
  4. Réponses: 4
    Dernier message: 17/05/2007, 14h17
  5. Lien hypertexte dans un formulaire
    Par 33ctdebut dans le forum IHM
    Réponses: 3
    Dernier message: 02/02/2007, 22h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo