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 :

MM_validateForm et textarea


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 166
    Par défaut MM_validateForm et textarea
    Bonjour tout le monde.

    Pour ceux qui connaisse cette fonction qui peut me dire pourquoi elle ne fonctionne pas avec mon textarea j'ai beau renseigner le champ la fonction considère que mon champ est vide. Soit j'ai fait une erreur de frappe que je vois pas parce que je suis miro soit il y a un problème.

    Voici le code :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    function MM_findObj(n, d) { //v4.01
      var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
        d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
      if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
      for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
      if(!x && d.getElementById) x=d.getElementById(n); return x;
    }
     
    function MM_validateForm() { //v4.0
      var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
      for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
        if (val) { nm=val.name; if ((val=val.value)!="") {
          if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
            if (p<1 || p==(val.length-1)) errors+=
    '-le champ '+nm+' doit contenir une adresse mail.\n';
          } else if (test!='R') { num = parseFloat(val);
            if (isNaN(val)) errors+='-le champ '+nm+' doit contenir un nombre.\n';
            if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
              min=test.substring(8,p); max=test.substring(p+1);
              if (num<min || max<num) errors+='- '+nm+' doit contenir une nombre entre '+min+' et '+max+'.\n';
        } } } else if (test.charAt(0) == 'R') errors += '-le champ '+nm+' doit être renseigné.\n'; }
      } if (errors) alert('Erreur(s) à rectifier:\n'+errors);
      document.MM_returnValue = (errors == '');
    }
     
    ...
     
    <td>
      <td align="right" valign="top" nowrap="nowrap"><strong>Description
    <span class="Style4">*</span></strong></td>
                  <td><textarea name="description" cols="32" rows="15" 
    id="description"></textarea></td>
    ...
    <input type="submit" onclick="MM_validateForm('nomProduit','','R','reference','','R',
    'description','','R','prix','','RisNum','petiteImage','','R','grandeImage','','R');
    return document.MM_returnValue" value="Ins&eacute;rer l'enregistrement" /></td>
    Merci.

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 33
    Par défaut
    Salut,
    je ne suis pas sure de ce que je raconte mais, peux tu tester avec un innerHTML a la place du .value
    sur ton text_area

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 166
    Par défaut
    J'ai modifier la fonction mais il ne veut rien savoir pour le champ textarea

    voici le code :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    function MM_validateForm() { //v4.0
      var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
      for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
     
      	if (test != 'TR') {
    	    if (val) { nm=val.name; if ((val=val.value)!="") {
    	      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
    		if (p<1 || p==(val.length-1)) errors+='-le champ '+nm+' doit
                    contenir une adresse mail.\n';
    	      } else if (test!='R') { num = parseFloat(val);
    		if (isNaN(val)) errors+='-le champ '+nm+' doit contenir un 
                    nombre.\n';
    		if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
    		  min=test.substring(8,p); max=test.substring(p+1);
    		  if (num<min || max<num) errors+='- '+nm+' doit contenir une 
                       nombre entre '+min+' et '+max+'.\n';
    	    } } } else if (test.charAt(0) == 'R') errors += '-le champ '+nm+' doit 
                        être renseigné.\n'; }
    	}else{
    	 	 if (val)  { nm=val.name; if (val.innerHTML == "") errors += '-le 
                     champ '+nm+' doit être renseigné.\n';} 
    	}
      } if (errors) alert('Erreur(s) à rectifier:\n'+errors);
      document.MM_returnValue = (errors == '');
    }
     
    ...
    <input type="submit" onclick="MM_validateForm('nomProduit','','R','reference','','R',
    'description','','TR','prix','','RisNum','petiteImage','','R','grandeImage','','R')
    ;return document.MM_returnValue" value="Ins&eacute;rer l'enregistrement" />

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 166
    Par défaut
    Je crois savoir d'ou vient le problème normalement le script doit très bien marcher même avec un textarea. Dans cette page il y a tinyMCE qui est utilisé pour le textarea y a surement un problème à cause du tinyMCE

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 166
    Par défaut
    c'est bon voici le code corrigé pour le cas d'un textarea avec tinyMCE ca pourrait servir à quelqu'un :

    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
    20
    21
    22
    23
    24
    25
    26
     
    function MM_validateForm() { //v4.0
      var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
      for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
     
      	if (test != 'TR') {
    	    if (val) { nm=val.name; if ((val=val.value)!="") {
    	      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
    		if (p<1 || p==(val.length-1)) errors+='-le champ '+nm+' doit 
    contenir une adresse mail.\n';
    	      } else if (test!='R') { num = parseFloat(val);
    		if (isNaN(val)) errors+='-le champ '+nm+' doit contenir un 
    nombre.\n';
    		if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
    		  min=test.substring(8,p); max=test.substring(p+1);
    		  if (num<min || max<num) errors+='- '+nm+' doit contenir une
     nombre entre '+min+' et '+max+'.\n';
    	    } } } else if (test.charAt(0) == 'R') errors += '-le champ '+nm+' doit
     être renseigné.\n'; }
    	}else{
    	 	 if (val)  { nm=val.name; tinyMCE.triggerSave(true, true);
     if (val.value == "") errors += '-le champ '+nm+' doit être renseigné.\n';} 
    	}
      } if (errors) alert('Erreur(s) à rectifier:\n'+errors);
      document.MM_returnValue = (errors == '');
    }
    voilà rajouter tinyMCE.triggerSave(true, true); avant de vérifier la value du textarea

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Caratère spécial dans un textArea
    Par sigas dans le forum Composants
    Réponses: 4
    Dernier message: 21/07/2004, 12h18
  2. quoi utilisé ? TextArea ou autre ?
    Par soad dans le forum Composants
    Réponses: 2
    Dernier message: 05/06/2004, 16h19
  3. Réponses: 24
    Dernier message: 18/05/2004, 16h06
  4. rediriger la sortie standard vers un textarea
    Par gromite dans le forum Composants
    Réponses: 9
    Dernier message: 10/05/2004, 11h07
  5. attribution de texte dynamique à un textarea
    Par stephane eyskens dans le forum Flash
    Réponses: 6
    Dernier message: 01/10/2003, 13h52

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