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 :

Fonctions compatibles avec un formulaire


Sujet :

JavaScript

  1. #1
    Membre averti Avatar de Hug0_76
    Profil pro
    Inscrit en
    Août 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 292
    Points : 332
    Points
    332
    Par défaut Fonctions compatibles avec un formulaire
    Bonjour,

    J'ai écris des fonctions de vérification sur un textarea (cf post de gforce) mais je me rends compte que celles ci ne fonctionnent pas quand je met mon textarea dans un formulaire.
    J'aimerai que l'on m'éclaire sur la question, de savoir si je dois recoder mes fonctions ou bien s'il est possible de le rendre compatible avec un formulaire.

    Voici le code :
    Un simple copier coller dans un document html vous montrera qu'il fonctionne, or avec un une balise <form> /<form> .

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
    <html>
    	<head>
    		<title>Textarea</title>
    		<script language="JavaScript" type="text/javascript">
     
    			/** Fonction qui va mettre à jour les champs en fonction du nombre de caractères entré ainsi que 
    			*	du nombre de lignes.
    			*/
    			function countRow() {
    				textarea = document.getElementById("pagetext");
    				b = document.getElementById("modif");
    				d1 = document.getElementById("nb_carac");
    				d2 = document.getElementById("nb_carac_restant");
    				d3 = document.getElementById("nb_lignes_restantes");
     
    				text = textarea.value;
    				tab = text.split("\n");
     
    				d1.innerHTML = "Nb caractères : "+text.length;
    				d2.innerHTML = "Caractères restant : "+(360 - text.length);
    				d3.innerHTML = "Lignes restantes : "+(10 - tab.length);
     
    				if(tab.length >= 10 || text.length >= 360) {
    					textarea.disabled = true;
    					b.disabled = false;
    				}
    			}
     
    			/** Fonction permet le comptage des caractères ainsi que des lignes, grâce à l'appel de la fonction countRow() 
    			*	On appel la fonction action() tous les 100e de seconde pour simuler le compage en temps réel.
    			*/
    			function action() {
    				countRow();
    				t =	setTimeout("action()",100);
    			}
     
    			/** Cette fonction permet tout simplement de rendre la main, lorsque l'on click sur le bouton : Modifier Text.
    			*	Lorsqu'il y a 360 caractères, la fonction va supprimé le dernier caractère puis rendre la main au textarea.
    			*	Lorsqu'il y a 10 lignes, la dernière sera supprimée, puis la main sera rendu au textarea.
    			*/
    			function main() {
    				window.clearTimeout(t);
    				var temp="";
    				textarea = document.getElementById("pagetext");
    				b = document.getElementById("modif");
    				carac_restant = 360-textarea.value.length;
    				ligne_restante = 10-(textarea.value.split("\n")).length;
    			 	tab = (textarea.value).split("\n");
    				if(ligne_restante == 0) {
    					for(i=0;i<8;i++) {
    						temp += tab[i]+"\n";
    					}
    					textarea.value = temp;
    					alert(tab[0]);
    				} else {
    					if(carac_restant == 0) {
    						textarea.value = (textarea.value).substring(0,(textarea.value).length-1);
    					}
    				}
    				textarea.disabled = false;
    				b.disabled = true;			
    			}
     
     
    			/** Fonction qui réinitialise tous les champs.*/
    			function raz() {
    				if(confirm("Souhaitez vous tout effacer ?")) {
    					textarea = document.getElementById("pagetext");
    					b = document.getElementById("modif");
    					d1 = document.getElementById("nb_carac");
    					d2 = document.getElementById("nb_carac_restant");
    					d3 = document.getElementById("nb_lignes_restantes");
     
    					/** On réinitialise tous les champs 
    					*    - le textarea
    					*	 - les champs comptant les caractères ainsi que les lignes
    					*	 - pour le cas où le textarea est inutilisable, on lui rend la main
    					*/
    					textarea.value = "";
    					d1.innerHTML = "Nb caractères : "+text.length;
    					d2.innerHTML = "Caractères restant : "+(360 - text.length);
    					d3.innerHTML = "Lignes restantes : "+(10 - tab.length);
    					if((textarea.disabled)) {
    						textarea.disabled = false;
    					}
    					b.disabled = true;
    				}
    			}
    		</script>
     
    	</head>
     
     
    	<body>
     
    		<textarea name="pagetexte" id="pagetext" onFocus="action()" rows="10" cols="50"></textarea><br>
     
    		<div id="nb_carac">Nb caractères :</div><br>
    		<div id="nb_carac_restant">Caractères restant :</div><br>
    		<div id="nb_lignes_restantes">Lignes restantes :</div>  <br>
     
    		<input type="button" value="Modifier le texte" onClick="main()" disabled id="modif">
    		<input type="button" value="Tout effacer" onClick="raz()">	
     
    	</body>
     
    </html>
    D'avance merci

  2. #2
    Membre averti Avatar de Hug0_76
    Profil pro
    Inscrit en
    Août 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 292
    Points : 332
    Points
    332
    Par défaut
    Personne ne veut se prendre la tête???
    Je comprends!
    Bon eh bien je vais me débrouiller seul!

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 32
    Points : 36
    Points
    36
    Par défaut
    ton code marche très bien si au lieu d'appeller ta fonction action() dans le onfocus="" tu l'appelle dans le body onload=""

  4. #4
    Membre averti Avatar de Hug0_76
    Profil pro
    Inscrit en
    Août 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 292
    Points : 332
    Points
    332
    Par défaut
    hum!
    pk pas! je n'y avais pas pensé !
    je test ca tout de suite!


    Exact!
    Je te remercie bien!


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

Discussions similaires

  1. Réponses: 10
    Dernier message: 02/07/2012, 17h30
  2. Réponses: 2
    Dernier message: 28/12/2011, 08h08
  3. Réponses: 1
    Dernier message: 13/02/2010, 18h49
  4. Réponses: 2
    Dernier message: 13/04/2009, 00h10
  5. Fonction js avec le nom d'un formulaire en paramettre
    Par mello dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/11/2007, 16h52

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