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> :nono: .
Code:
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