11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
suite à la lecture du post de Kleiny sur "formulaire et anti-spam", je suis en train de tester la technique du champ vide (simple et pratique) mais j'ai un petit soucis.
Avant d'envoyer mon formulaire, je teste les champs via le plugin jquery "Validate".
Malheureusement je n'ai pas réussi à tester si le champs est vide avec une règle genre : equalTo: null ou equalTo: ''".
J'ai donc créer un premier champ vide et je teste si le deuxième est égale au premier.
Cela fonctionne mais seulement si la div contenant mes 2 champs est visible, dès que j'ajoute "display:none", ça ne fonctionne plus. De plus, si un robot rempli ces deux champs avec la même valeur, ça passera... ce qui n'est pas l'effet recherché.

Quelqu'un sait-il comment tester si un champ est vide avec "Validate" ?
Avez vous une autre solution à proposer ?

Bonne journée
j'ai trouvé comment tester un champ vide avec "Validate".
Il suffit de créer une règle testant le nombre ce caractère maximum qui pour mon cas est de zéro (maxlength: 0).
Par contre toujours le même soucis !!
Si ma div contenant le champ vide est invisible (display:none) ça ne fonctionne plus.
Si vous avez une idée ??
Les robots spammeurs n'utilisent pas JavaScript. Donc ta vérification sur le champ anti-spam doit se faire côté serveur quoi qu'il arrive (en PHP par exemple).
Modifié par jb_gfx (26 Jun 2012 - 13:49)
Merci pour ta réponse mais je comprends pas.
Tu peux développer un peu...

mon problème réside juste dans le fait que "Validate" ne prend plus en compte les champs dès qu'ils sont cachés.
J'ai finalement trouvé ma réponse sur un autre forum.
Pour ceux que ça intéresse voici l'explication...

j'ai donc ajouté un champ masqué dans mon formulaire (comme décris par jb_gfx dans ce post http://forum.alsacreations.com/topic-1-59142-1-Formulaire-contact-Astuce-anti-spam.html)
Pour Jquery Validate, il faut créer un règle pour notre champ (0 caractère maxi = champ vide)
<script src="js/jquery.validate.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
	$("#Form").validate({
		rules: {
			...
			no_email: {
				maxlength: 0
		},
		messages: {
			...
			no_email: {
				maxlength: "Le champ n'est pas vide"
		}
	});
});
$.validator.setDefaults({ ignore: '' });
</script>

Depuis la version 1.9 de "Validate", les champs cachés sont ignorés donc il faut ajouté une dernière ligne de code hors "$(document).ready(function()".
Modifié par yaka93 (28 Jun 2012 - 10:50)