Rajouter du javascript sur un champ dans un formulaire
Bonjour à tous !
Je dois actuellement modifier une application faite via Symfony. N'ayant jamais vraiment chipoté avec ce framework, je galère un peu.
Pour le moment, j'ai un simple formulaire avec des champs (InputText). J'aimerais cependant rajouter un petit script Javascript qui va compter le nombre de caractères dans le champ.
J'ai déjà fait mon petit script de vérification : (je vous mets toute la page
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
|
<head>
<script language="Javascript" type="text/javascript">
// Affecte à certains évènements d'un textarea, le contrôle de la longueur de son contenu
// nom_textarea = id du textArea ; nbcar = nb car max ; nom_decompte = id de l'affichage du decompte
function LimiterTextArea(nom_textarea, nbcar, nom_decompte)
{
var montextarea = document.getElementById(nom_textarea);
var mondecompte = document.getElementById(nom_decompte);
if (montextarea && mondecompte)
{
var tmp = function() {
var cond1 = TextAreaEstRempli(montextarea, nbcar, mondecompte);
var cond2 = caractere_valide(event);
return (cond1 && cond2);
};
montextarea.onclick = tmp;
montextarea.onblur = tmp;
montextarea.onkeyup = tmp;
montextarea.onkeypress = tmp;
// Affichage du nombre de caractères restant
if(mondecompte.type)
mondecompte.value = NbCarRestant(montextarea, nbcar); // Pour un input de formulaire
else
mondecompte.innerHTML = NbCarRestant(montextarea, nbcar); // Pour un élément HTML
}
}
// Renvoie vrai si le nombre de caractères maximum du textarea n'est pas atteint
function TextAreaEstRempli(montextarea, nbcar, mondecompte)
{
if (montextarea)
{
if (montextarea.value.length <= nbcar)
{
//alert("pas rempli");
// mes actions ...
// *** Affichage du nombre de caractères restant
if(mondecompte.type)
mondecompte.value = NbCarRestant(montextarea, nbcar);
else
mondecompte.innerHTML = NbCarRestant(montextarea, nbcar);
return true;
}
else
{
// On retire le caractere de trop
montextarea.value = montextarea.value.substr(0, nbcar);
// Affichage du nombre de caractères restant
if(mondecompte.type)
mondecompte.value = NbCarRestant(montextarea, nbcar);
else
mondecompte.innerHTML = NbCarRestant(montextarea, nbcar);
alert("Un message est limité à 160 caractères !");
return false;
}
}
}
// Renvoie le nombre de caractère à saisir
function NbCarRestant(montextarea, nbcar)
{
if (montextarea.value.length)
return new Number(nbcar - montextarea.value.length);
else
return new Number(nbcar);
}
// verifie si le caractere tapé est autorisé
function caractere_valide(evt)
{
//var keyCode = evt.which ? evt.which : evt.keyCode;
var keyCode = evt.keyCode;
var interdit = 'àâäãçéèêëìîïòôöõùûüµñ&#~^%$£?²§%*[]{}<>|\\/`\'';
if (interdit.indexOf(String.fromCharCode(keyCode)) >= 0) {
alert("Les caractères spéciaux ne sont pas autorisés");
return false;
}
}
</script>
</head>
<body>
<textarea id="commentaire" name="commentaire" class="limiter"></textarea>
<div id="controle_decompte" name="controle_decompte" class="decompte"></div>
<script language="Javascript" type="text/javascript"> LimiterTextArea('commentaire', 160, 'controle_decompte'); </script>
</form>
</body> |
Comment pourrais-je intégrer ça ?
Merci d'avance !
P-Y