Afficher plusieurs messages dans un div

Résolu/Fermé
r.mahery Messages postés 19 Date d'inscription lundi 30 mai 2011 Statut Membre Dernière intervention 20 juin 2013 - 30 avril 2013 à 10:44
 Utilisateur anonyme - 30 avril 2013 à 15:27
Bonjour,

Voici mon problème:
Je suis débutant en Javascript Jquery et je suis sur la gestion des erreurs sur les formulaires. Lorsqu'un utilisateur saisit une "mauvaise" valeur dans un champ, je fait apparaitre un message dans un div. Sachant que j'ai plusieurs <input> et donc plusieurs message d'erreurs, je voudrais pouvoir afficher, lorsque l'utilisateur fait par exemple deux erreurs (sur un input1 et un input2), les deux message d'erreurs à la suite. En gros, concaténer deux texte.
Voici une partie mon code:

$("#err").fadeIn().text("Veuillez saisir un code");

//"err" est une div

Merci d'avance

2 réponses

Utilisateur anonyme
30 avril 2013 à 10:58
Salut salut,

Tu utilises AJAX pour soumettre ton formulaire?
Peux tu poster un peu plus de code pour ce qui est du formulaire
0
r.mahery Messages postés 19 Date d'inscription lundi 30 mai 2011 Statut Membre Dernière intervention 20 juin 2013
30 avril 2013 à 13:00
Salut,
Merci d'avoir répondu ;)
Pour l'instant, je n'utilise pas AJAX.

Code:
$(document).ready(function() {
//controles champs formulaire
//Champs de type code en format texte
$("#CodeText").keyup(function()
{
if($("#CodeText").val() == "")
{
$("#err").fadeIn().text("Veuillez saisir un code");
}
else
if(!$("#CodeText").val().match(/^[a-z0-9_-]{3,16}$/i))
{
$("#err").fadeIn().text("Veuillez saisir un code valide");
}
else

{
$("#err").fadeOut().text("");
}
}
)

//Champs de type libellé en format texte
$("#LibText").keyup(function()
{
if(!$("#LibText").val().match(/^[a-z0-9]+$/i))
{
$("#err").fadeIn().text("Veuillez saisir un libellé valide");
}
else
{
$("#err").fadeOut().text("");
}
if($("#LibText").val() == "")
{
$("#err").fadeIn().text("Veuillez saisir un libellé");
}

}
)
................................................................................................................................................................................
J'affiche le texte d'erreur dans une div (id=err). Le soucis c'est que si il y a plusieurs erreurs, seule la dernière sera affichée dans le div. Je souhaite tt afficher.
0
Utilisateur anonyme
30 avril 2013 à 14:33
Les 2 input sont des champs texte?

Pour rester sur ta lancée, je pense que cela devrait marcher comme ça
var str1="Veuillez saisir un code\n";
var str11="Veuillez saisir un code valide\n";
var str2="Veuillez saisir un libellé valide\n";
var str22="Veuillez saisir un libellé\n";
var STR1="";
var STR2="";

$(document).ready(function() {

	$("#CodeText").keyup(function()
	{
		if($("#CodeText").val() == "")
		{	
			STR1=str1;
			$("#err").fadeIn().text(STR1+STR2);
		}
		else{
			if(!$("#CodeText").val().match(/^[a-z0-9_-]{3,16}$/i))
			{
				STR1=str11;
				$("#err").fadeIn().text(STR1+STR2);
			}
			else
			{
				STR1="";
				if(STR2==""){
					$("#err").fadeOut().text("");
				}else{
					$("#err").fadeIn().text(STR2);
				}
			}
		}
	}
	)

	$("#LibText").keyup(function()
	{
		if($("#LibText").val() == "")
		{
			STR2=str22;
			$("#err").fadeIn().text(STR1+STR2);
		}
		else{
			if(!$("#LibText").val().match(/^[a-z0-9]+$/i))
			{
				STR2=str2;
				$("#err").fadeIn().text(STR1+STR2);
			}
			else
			{
				STR2="";
				if(STR1==""){
					$("#err").fadeOut().text("");
				}else{
					$("#err").fadeIn().text(STR1);
				}
			}
		}
	}
	)
});


Après j'avoue que je ne m'y prends pas exactement de cette manière pour gérer les erreur car en multipliant les champs cela va vite devenir velu.
0
r.mahery Messages postés 19 Date d'inscription lundi 30 mai 2011 Statut Membre Dernière intervention 20 juin 2013
30 avril 2013 à 14:36
Oui ce sont des champs textes. Tu gèrerai ça comment toi?
0
Utilisateur anonyme
30 avril 2013 à 14:44
Déjà est ce que le code que j'ai posté à le comportement que souhaites?
0
Utilisateur anonyme
30 avril 2013 à 14:49
En fait je dis ça mais y a pas grand chose à changé, je pensais à autre chose.
Et bien pour éviter d'avoir à gérer des concaténation de chaine, je mettrais sous chaque champ input un champ erreur propre (erreur_libelle, erreur_pseudo), comme ça lors de la vérification il vérifie juste son champ input et affiche la div erreur correspondante sans se préoccuper de savoir si d'autre champ génèrent des erreurs à ajouter à la chaine .
Si c'est pas clair n'hésite pas ;)
0
r.mahery Messages postés 19 Date d'inscription lundi 30 mai 2011 Statut Membre Dernière intervention 20 juin 2013
30 avril 2013 à 15:19
Bonne idée, je compte ensuite utiliser AJAX et PHP ensuite. Du coup, je pense qu'il est possible de renvoyer des message d'erreur à partit du code PHP (via AJAX et XMLHttpRequest) vers la div de son choix (dis moi si je me trompe).
Merci encore de ton aide. C cool d'aider les débutants ;)
0
Utilisateur anonyme
30 avril 2013 à 15:27
Oui tu pourras soumettre dynamiquement un formulaire vers le traitement PHP si tu le souhaites ;).

Y a pas de problème ça fait plaisir!! Bon courage
0