Fonction de validation formulaire

Résolu
RateauMix
Messages postés
74
Date d'inscription
dimanche 30 novembre 2014
Statut
Membre
Dernière intervention
29 novembre 2017
- Modifié par RateauMix le 29/12/2014 à 13:19
RateauMix
Messages postés
74
Date d'inscription
dimanche 30 novembre 2014
Statut
Membre
Dernière intervention
29 novembre 2017
- 30 déc. 2014 à 16:21
Bonjour,

Je cherches depuis quelque temps à valider un un formulaire, que j'ai créé, grâce à une fonction.

Ma première étape de validation est celle-ci ("tooltip" est le nom des messages d'erreur)

var $nom = $("#nom");

var $check = {}; // On met toutes nos fonctions dans un objet littéral

$check['nom'] = $(function() {
  if(!$nom.val().match(/^[A-Z]([a-z-]*)[a-z]+$/)) {
   $nom.next(".tooltip").show();
   return false;
  } else {
   $nom.next(".tooltip").hide();
   return true;
  }
});


J'ai plein d'autres "check". Mais là où ça pose problème, c'est que cette fonction ne fait rien de visible. Il faut donc une deuxième étape de validation qui serait la fonction suivante sauf qu'elle n'utilise pas JQuery donc (je suppose que c'est pour cela qu'elle ne fonctionne pas) :

$(function() {
 var $inputs = $('input:text'),
 $inputsLength = $inputs.length;
      
 for (var i = 0 ; i < $inputsLength ; i++) {
  $inputs[i].keyup(function(e) {
  $check[e.currentTarget](e.currentTarget); // "e.target" représente l'input actuellement modifié
 }, false);}
 });


Mon problème est que je n'arrive pas à la traduire en JQuery.
Si quelqu'un sait comment faire...
Merci.

3 réponses

jordane45
Messages postés
35831
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 juillet 2022
358
29 déc. 2014 à 17:51
Bonjour,

sauf qu'elle n'utilise pas JQuery donc (je suppose que c'est pour cela qu'elle ne fonctionne pas) :

Et bien pourtant.. dans le code de ta fonction.. il y a bien du Jquery...
par exemple :
var $inputs = $('input:text'),

mais en tout cas.. ce n'est clairement pas la cause du souci !

Maintenant si toi tu veux parcourir tous tes Input:text .. il existe en jquery la méthode : Each...

par exemple :
$('input[type="text"]').each(function(){
    alert($(this).val());
})


Si tu veux ajouter un Event : KeyUp sur tes Input tu peux aussi utiliser :
$('input[type="text"]').keyup(function(e) {
alert( "Handler for .keyup() called on " + e.currentTarget );
});


0
RateauMix
Messages postés
74
Date d'inscription
dimanche 30 novembre 2014
Statut
Membre
Dernière intervention
29 novembre 2017

29 déc. 2014 à 18:43
Salut,
ok je vais essayer ça. Merci :).
0
RateauMix
Messages postés
74
Date d'inscription
dimanche 30 novembre 2014
Statut
Membre
Dernière intervention
29 novembre 2017

30 déc. 2014 à 13:30
Salut,
J'ai l'impression qu'il y a un problème car la fonction ne s'exécute qu'au début : si je remplis correctement le formulaire et que j'actualise la page ça fonctionne, sinon, non.

$(function() {var $inputs = $('input:text');
        $inputs.each(function(){
		$inputs[i].addEventListener('keyup', function(e) {
		   $check[e.target.id](e.target.id);// "e.target" représente l'input actuellement modifié
		}, false);    
	})
})();	
0
RateauMix
Messages postés
74
Date d'inscription
dimanche 30 novembre 2014
Statut
Membre
Dernière intervention
29 novembre 2017

30 déc. 2014 à 14:32
En fait à la ligne 3 j'ai mis $inputs sans le [i]
0
jordane45
Messages postés
35831
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 juillet 2022
358
30 déc. 2014 à 15:17
Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
0
RateauMix
Messages postés
74
Date d'inscription
dimanche 30 novembre 2014
Statut
Membre
Dernière intervention
29 novembre 2017

Modifié par RateauMix le 30/12/2014 à 16:22
La question n'était pas résolue, mais j'ai fini par trouver... il fallait juste mettre la fonction $('input:text').keyup(function(){ au tout début du code. Bon maintenant, il me reste à voir pour l'AJAX. Merci.
0