Limiter taille dans un formulaire

Résolu/Fermé
justins - 1 juil. 2009 à 08:43
 justins - 1 juil. 2009 à 11:32
Bonjour,

Je souhaiterais limiter la taille du champ entré dans un formulaire afin qu'on ne puisse entrer que 4chiffre (année par exemple) et si la longueur est différente de 4 alors on aura une erreur disant qu'il est nécessaire que la longueur soit de 4.

echo '
<form method="post" enctype="multipart/form-data">
<p> mois : </p> <input type="text" name="mois" size="2" value=""/>';
if (size != 4)
{
echo 'longueur incorrecte';
}
echo ' <p> annee </p> <input type="text" name="annee" size="4" value=""/>';
</form>

J'espere pouvoir trouver de l'aide
Merci
A voir également:

6 réponses

Ozimandias Messages postés 502 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 10 mars 2010 46
1 juil. 2009 à 09:48
Tu souhaite le tester en cours de frappe ou après la frappe?

Déjà pour limiter le nombre de caractère maximum, tu peux mettre:

<input type="text" name="mois" size="4" maxlength="4" value=""/>

Comme ça ton input fait 4 caractères de large (size="4") et on ne peut taper plus de 4 caractères (maxlength="4")

Ensuite pour tester en direct le nombre de caractère il faut passer par javascript:

ce code est à placer entre les balises HEAD de ta page (il teste pour 4 caractères, si tu veux tester les deux champs, dis le moi et je modifierais)
<script language="javascript" type="text/javascript">
<!--

function test_input(nombre){

avertissement = document.getElementById("zone_avert");
avertissement.innerHTML = "";

if (nombre.length<4){
avertissement.innerHTML = "Vous devez entrer 4 caractères";
}

}
-->
</script>


ensuite dans ton PHP, ton input:

<input type="text" name="mois" size="4" maxlength="4" value="" onkeypress="test_input(this.value)" onkeyup="test_input(this.value)" /><span id="zone_avert"></span>


@+
1
Mopra-L Messages postés 146 Date d'inscription lundi 29 juin 2009 Statut Membre Dernière intervention 23 mai 2012 6
1 juil. 2009 à 09:52
Hello,

Essaie avec l'option maxlength (non testé, je viens de trouver ca sur Google)


<form method="post" enctype="multipart/form-data">
<p> mois : </p> <input type="text" name="mois" maxlength="2" value=""/>

<p> annee </p> <input type="text" name="annee" maxlength="4" value=""/>
</form>

L'option size definit la longueur du champ input ;)


EDIT : Ah, pas assez rapide pour répondre ^^
0
Ozimandias Messages postés 502 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 10 mars 2010 46
1 juil. 2009 à 09:55
C'est pas grave, ton post est la preuve que l'on peut trouver des réponses avec gogole...

@+
0
Si seulement j'avais accès à internet, j'ai accès qu'à un nombre minime de sites dont comment ça marche. =)

<script language="javascript" type="text/javascript">
<!--

function test_input(nombre){

avertissement = document.getElementById("zone_avert");
avertissement.innerHTML = "";

if (nombre.length<2){
avertissement.innerHTML = "Vous devez entrer 2 caractères";
}

}
-->
</script>

<p> mois : </p> <input type="text" name="mois" size="2" value="" onkeypress="test_input(this.value)" onkeyup="test_input(this.value)" /><span id="zone_avert"></span>

Si j'ai bien compris pour le second ce sera ainsi?
Sinon niveau explication du code, tu as en fait créé une fonction qui va lancer une fenetre d'erreur si la longueur n'est pas celle attendue. Par contre je sais qu'onkeypress verifie les touche pressée mais cela signifie que la verification se fera à chaque fois ou losque j'enverrais le formulaire?

Si ce n'est pas la seconde en mettant un isset ($_post(envoye) qui appelera la fonction de test ça le fera qu'une fois le form envoyé non?

Merci pour votre précieuse aide!
0
Mopra-L Messages postés 146 Date d'inscription lundi 29 juin 2009 Statut Membre Dernière intervention 23 mai 2012 6
1 juil. 2009 à 10:20
N'oublie pas le maxlength="2", pour être sur que la longueur soit de 2, ni plus ni moins ;)

Par contre, je pense que ca risque de devenir tres lourd, un message d'erreur a chaque saisie de touche.

J'aurais plutot fait :

<script language="javascript" type="text/javascript">
<!--

function test_input(nombre){

avertissement = document.getElementById("zone_avert");
avertissement.innerHTML = "";

if (nombre.length<4){
avertissement.innerHTML = "Vous devez entrer 4 caractères";
return false;
}else{
return true;
}

}
-->
</script>


<form method="post" enctype="multipart/form-data" onSubmit=test_input(this.value); >
<p> mois : </p> <input type="text" name="mois" maxlength="2" value=""/>
<p> annee </p> <input type="text" name="annee" maxlength="4" value=""/>
</form>
0
Ozimandias Messages postés 502 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 10 mars 2010 46
1 juil. 2009 à 10:44
ta fonction ne peut pas marcher... Tu lui demandes de tester la longueur de la valeur du formulaire...
<form method="post" enctype="multipart/form-data" onSubmit=test_input(this.value); >
Le mot-clef "this" prends en compte la "balise" dans laquelle il est, donc form dans ce cas.

Avec ma fonction, le message d'erreur s'affichera dans le span a côté du input dès que la personne tape un caractère et ce jusqu'à ce qu'il en ai tapé 4. Elle est facilement modifiable pour que ça marche avec le input à 2 caractères.
0
justins > Ozimandias Messages postés 502 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 10 mars 2010
1 juil. 2009 à 11:32
Et pour tester après la frappe je vais devoir procéder de quelle manière, par exemple une fois que je submit le formulaire qu'on me dire que la valeur entrée est invalide?

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mopra-L Messages postés 146 Date d'inscription lundi 29 juin 2009 Statut Membre Dernière intervention 23 mai 2012 6
1 juil. 2009 à 10:53
Ah, je vois, plus ingenieux que moi, je l'avoue :D


Avec tout ca, il devrait trouver son bonheur, en tout cas :)
0
Oui je vais m'amuser avec tout ça, ça me donne une piste appréciable de la manière comment je peux procéder donc merci beaucoup.
0