[RESOLU] Vérification du formulaire

Eléphant du PHP | 386 Messages

23 juin 2012, 01:29

Bonjour, le script ci-dessous permet de vérifier les champs de mon formulaire, sauf que mon textarea a un value et que forcément le champs "news" est rempli par défaut.
Donc j'aimerais que le formulaire ne s’envoie pas si "Exprimez-vous" est dans "value"

Y'a t'il une solution à ce problème ?

J'avais pensé à placeholder mais ce n'est pas compatible par tous les navigateurs :(

[javascript]
<script language="javascript">
function recupere_info ()
{
if(document.form1.titre.value == "" || document.form1.news.value == "")
{
return false;
}
return true;
}
</script>
[/javascript]
<form action="include/send-news.php" method="post" id="form1" name="form1" onsubmit=" return (recupere_info());">
	<table>
		<tr><td class="titre-news">Titre :</td></tr>
		<tr><td><input type="text" autocomplete="off" class="news-titre" name="titre" /></td></tr>
		<tr><td class="titre-news">Article :</td></tr>
		<tr><td><textarea name="news" autocomplete="off" class="news-article" value="Exprimez-vous..." onfocus="if (this.value==this.defaultValue) this.value = ''" onblur="if (this.value=='') this.value = this.defaultValue">Exprimez-vous...</textarea></td></tr>
	</table>
	<input type="hidden" name="send" value="new" />
	<input type="submit" class="submit-news" value="" />
</form>
Merci d'avance

ViPHP
AB
ViPHP | 5818 Messages

23 juin 2012, 04:27

Et à part faire bugguer ton script, il sert à quoi le "onblur" ?

[javascript] function recupere_info ()
{
if(document.form1.titre.value == "" || document.form1.news.value == "" || document.form1.news.value == document.form1.news.defaultValue)
{
return false;
}
return true;
}
</script>

<form action="include/send-news.php" method="post" id="form1" name="form1" onsubmit=" return (recupere_info());">
<table>
<tr><td class="titre-news">Titre :</td></tr>
<tr><td><input type="text" autocomplete="off" class="news-titre" name="titre" /></td></tr>
<tr><td class="titre-news">Article :</td></tr>
<tr><td><textarea name="news" autocomplete="off" class="news-article" value="Exprimez-vous..." onfocus="if (this.value==this.defaultValue) this.value = ''">Exprimez-vous...</textarea></td></tr>
</table>
<input type="hidden" name="send" value="new" />
<input type="submit" class="submit-news" value="" />
</form>[/javascript]

Mais bon tu te prends la tête pour rien avec ton indication dans le textarea, ça fait bien longtemps qu'on sait qu'il faut saisir du texte dans un textarea ou alors si tu veux aller jusqu'au bout de ta logique il faudrait faire pareil pour le titre avec la mention "indiquez le titre" mais alors tu pourrais supprimer les labels (qu'au passage tu devrais convertir en vrais label html), mais finalement les labels c'est plus lisible ...et la boucle est bouclée.

Eléphant du PHP | 386 Messages

23 juin 2012, 10:07

Oui, je me suis dit la meme chose ^^
pas de value=""
Ca sert a rien, y'a les labels ^^

ViPHP
AB
ViPHP | 5818 Messages

23 juin 2012, 13:15

Cela dit, je t'avais donné la solution dans mon code plus haut, en cas de besoin tu sauras maintenant comment faire.
Au passage utilise la balise "label" pour tes labels, c'est fait pour ça. Aussi normalement l'utilisation des tableaux est réservée à la présentation de données tabulaires. Un code de formulaire plus correct serait :
<form action="include/send-news.php" method="post" id="form1" name="form1" onsubmit=" return (recupere_info());">
        <div>
                <label for="titre" class="titre-news">Titre :</label>
                <br />
                <input type="text" autocomplete="off" class="news-titre" name="titre" id="titre" /><br />

                <label for="news" class="titre-news">Article :</label>
                <br />
                <textarea name="news" id="news" autocomplete="off" class="news-article" value="Exprimez-vous..." onfocus="if (this.value==this.defaultValue) this.value = ''">Exprimez-vous...</textarea>
                <br />
        		<input type="submit" class="submit-news" value="Envoyer" />
                <input type="hidden" name="send" value="new" />
        </div>
</form>