Submit problème

Fermé
epitale Messages postés 3942 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 27 octobre 2017 - 28 janv. 2013 à 13:33
epitale Messages postés 3942 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 27 octobre 2017 - 28 janv. 2013 à 18:59
Bonjour,

Quelqu'un a t il déjà rencontré ce soucis, ou voit il d'ou cela peut venir ?

Dans le cadre d'un systeme de commentaires :

en php je vais chercher les commentaires, pour chaqun, cette boucle appel une fonction qui cré un formulaire de réponse


du coup pour répondre à un commentaire :


$('.btn_reponse').click(function() {
var formreponse = $(this).parent().attr('id');

$('#'+formreponse+'').submit(function(){
var donnees =$(this).serialize();
My_ajax(...);

return false;

});

});

Dans l'ensemble cela fonctionne (même si ma méthode pour récupérer le bon formulaire est peut être pas très classieuse)

Le soucis est que dans le formulaire de réponse il y a la commande html5 "required", en cliquant sur .btn_reponse si un champ est vide required le notifie, Après avoir renseigné le champ manquant cliquer à nouveau sur le boutton d'envoi appel deux fois My_ajax(...); (trois fois si trois tentatives avec un champ vide ...)

merci beacoup à qui pourra me renseigner, m'expliquer ce phénomène




--

1 réponse

Problème que je rencontre aussi régulièrement avec jQuery, mais ça viens de nous, pas du plug-in.

A un moment dans ton code tu dois rappeler cette fonction click (Rechargement d'une partie de la page par exemple) sans supprimer le bouton cliquable. Ce qui fais que l'élément se voit appliquer plusieurs fois la fonction.

Relis bien ton javascript et les appels que tu fais, tu devrais finir par trouver ou se trouve l'appel de trop.
0
epitale Messages postés 3942 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 27 octobre 2017 915
28 janv. 2013 à 16:57
salut et merci Quo,

le soucis semble plutot venir d'une sorte de mise en cache de submit
si un champ est vide submit lance la notification html5 mais garde en mémoire son appel, le prochain clic avec tous les champs renseignés il envoie deux fois

j'ai résolu avec du bouinnage
clic function{

submit funcion {
return false // juste pour lancer le controle html5 de required
}

test des champ, si non vide : envoie par ajax
}
0
Autre idée de workaround : Ne pas utiliser "required"

Fais une classe "obligatoire" et dans ton code javascript qu'ils soient tous bien renseignés avant de lancer le submit. Du genre :

var ok=true;
$('.obligatoire').each(function(){
if($(this).val() ==''){ ok=false}
})
if(ok){
submit ect...
}else{
alert('pas bon');
}

Je fais ce genre de chose pour automatiser mes formulaires. Ca permet aussi par exemple d'appliquer une classe rouge sur les champs non remplis pour signaler aux utilisateurs.
0
epitale Messages postés 3942 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 27 octobre 2017 915
28 janv. 2013 à 18:59
oui... j'ai utilisé une validation javascript, pour envoyer ou non le formulaire, toutefois j'ai gardé required histoire d'uniformiser les notifications de tout mes formulaires... mais oui si required fait d'autre soucis je l'enleverais et ferais toutes les notification avec javascript...

merci a toi
0