Jquery validation du formulaire dans un load()

Fermé
aljegre Messages postés 11 Date d'inscription mercredi 26 février 2014 Statut Membre Dernière intervention 31 juillet 2014 - 30 avril 2014 à 01:27
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 5 mai 2014 à 09:24
bonjour

j'ai l'habitude de valider mes formulaires avec jquery mais dans ce cas je n'arrive pas .

j'ai une page qui m'affiche les messages avec des forms (ces messages vient depuis un load()) , et une script jquery qui valider ces forms.

la script php d'affichage des message (macha.php)
$reponse = $bdd->prepare('SELECT * FROM xxx WHERE id = ? ORDER BY id DESC ');
$reponse->execute(array($_POST['nam']));
while($donnees = $reponse->fetch())
{ 
echo '<div id="cmmentaire_message">
'.$donnees['name_user'].'macha  trusted -- connected -- company</br>
'.$donnees['message'].'</br>
'.$donnees['time'].'</br></div>

<form action="" >
<input type="hidden" name="file" value="a" />
<input type="hidden" name="id" value="'.$donnees['id_machrou'].'" />
<input type="hidden" name="name" value="'.$donnees['name_user'].'" />
<input type="hidden" name="autor" value="oui" />
<input type="button"  title="ouvrire" class="openfilex" />
</form>';
}
$reponse->closeCursor();
?>

et script load :
function afficheCmmentairemacha() {
	var nam = $('#id_de_formul').val();
$('#affiche_commentaire_macha').load('portion/macha.php',{nam : nam});
}
setInterval(afficheCmmentairemacha, 1000);

et la function pour valider les formulaire :
$(function() {
$('.openfilex').click(function() {
  var $form = $(this).closest('form');
  var id = $form.find('input[name="id"]').val();
  var name = $form.find('input[name="name"]').val();
  var file = $form.find('input[name="file"]').val();
  var autor = $form.find('input[name="autor"]').val();
  $.post('../../models/boite_poster/valid_autorisation.php',{'id':id,'name':name,'file':file,'autor':autor});
});	
});

dans ma page principale qui contient tous ça il ya le

<div id="affiche_commentaire_macha"> </div>

la probleme que le script query ( pour valider les formulaire) ne valid pas le formulaire qui vient depuit le load. je essayer de changer la place de script de validation dans le script php qui load mais rient a changer .. et l'orsque je change la place de formulaire (qui est dans macha.php) dans ma page d'affichage pricipale ce script marche bient ..

comment valider les forms qui vient depuit load(), mes connaissances sure le validation avec jquery et modeste

merci d'avance

3 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
Modifié par Pitet le 30/04/2014 à 11:29
Salut,

Le problème semble venir de l'affectation de l'événement onclick sur ton bouton .openfilex.

Lorsque cet événement est déclaré dans ton code javascript, le formulaire n'existe pas encore dans le document html puisqu'il est chargé par la suite avec la fonction load().

Deux solutions possibles pour corriger cela :
- déclarer l'événement onclick sur .openfilex après le chargement du formulaire (ta fonction javascript serait donc envoyé à la suite du formulaire dans le fichier macha.php)
- déclarer l'événement "de manière délégué" afin que celui-ci fonctionne sur les nouveaux éléments html qui sont chargé par la suite

Tu pourras trouver plus d'informations sur la déclaration des événements direct ou délégué sur la doc de la fonction on (paragraphe Direct and delegated events) : https://api.jquery.com/on/

Bonne journée
1
aljegre Messages postés 11 Date d'inscription mercredi 26 février 2014 Statut Membre Dernière intervention 31 juillet 2014
1 mai 2014 à 01:14
merci bien
il me semble quec'est la solition logique
je va essayer avec cette idée.
je t'envoi
dsl pour mon orthograph
0
aljegre Messages postés 11 Date d'inscription mercredi 26 février 2014 Statut Membre Dernière intervention 31 juillet 2014
2 mai 2014 à 01:21
dsl la page que tu ma donner et en anglais et je comprend rien. je essayer avec le code
$( "#dataTable tbody tr" ).on( "click", function() {
  alert( $( this ).text() );
});
.. mais je peut pas l'integrer dans mon exemple .. ce quoi le tbody tr ?
peut tu me donner un exemple svp
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
Modifié par Pitet le 5/05/2014 à 09:25
Essaye comme ceci :
$( "body" ).on("click", ".openfilex", function() {
  alert("toto");
});
0