[jQuery] Récupérer checkbox dans une fonction
Résolu
Vodkadaaa
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
-
avion-f16 Messages postés 19252 Date d'inscription Statut Contributeur Dernière intervention -
avion-f16 Messages postés 19252 Date d'inscription Statut Contributeur Dernière intervention -
Bonsoir,
J'ai un formulaire en php. Ce formulaire contient des checkbox dont j'aimerai récupérer la valeur dans une fonction Ajax. J'y suis depuis hier soir dessus et je n'arrive toujours pas a récupérer ces valeurs.
voici mon php transformé en html (juste la partie qui nous intéresse) :
et voici le code de ma fonction javaScript affecter (simplifiée pareil) :
Le problème est que cette fonction ne marche pas. Si je fais un alert(salle.legth); il me trouve 1 ! Et si je fais alert(salle); (meme en ne cochant aucune chexbox) il me trouve 6 (rapport avec la valeur de ma première checkox a mon avis).
Help please !
Merci d'avance ++
J'ai un formulaire en php. Ce formulaire contient des checkbox dont j'aimerai récupérer la valeur dans une fonction Ajax. J'y suis depuis hier soir dessus et je n'arrive toujours pas a récupérer ces valeurs.
voici mon php transformé en html (juste la partie qui nous intéresse) :
<form id='form_affectation' onsubmit='affecter(4); vider_div("tableau_logiciels_salles"); return false;'> <input type=checkbox name='salle_id' value=6/>A099 (C2M - Denis Papin)<br> <input type=checkbox name='salle_id' value=5/>B020 (C2M - Denis Papin)<br> <input type=checkbox name='salle_id' value=4/>B055 (C2M - Sciences)<br> <input type=checkbox name='salle_id' value=2/>C100 (C2M - Denis Papin)<br> <input type=checkbox name='salle_id' value=7/>C134 (C2M - Sciences)<br> <input type='submit' value='Afficher'> </form>
et voici le code de ma fonction javaScript affecter (simplifiée pareil) :
function affecter(id_logiciel) { var salle = new Array(); salle = $("#form_affectation").find("input[name=salle_id]").val(); alert(salle.length); $.post("jQuery/affecter.php", { salle: salle }, function success(data){ $('#tableau_affectation').html(salle); }); }
Le problème est que cette fonction ne marche pas. Si je fais un alert(salle.legth); il me trouve 1 ! Et si je fais alert(salle); (meme en ne cochant aucune chexbox) il me trouve 6 (rapport avec la valeur de ma première checkox a mon avis).
Help please !
Merci d'avance ++
A voir également:
- [jQuery] Récupérer checkbox dans une fonction
- Fonction si et - Guide
- Recuperer message whatsapp supprimé - Guide
- Comment recuperer une video sur youtube - Guide
- Comment récupérer un document dans le presse-papier samsung - Guide
- Récupérer mon compte facebook désactivé - Guide
20 réponses
Mon formulaire est à la base en php, mais j'ai bien précisé que je l'avais retranscrit en html (pour que ce soit plus lisible).
Ah je ne savais pas ça. Mais à la base pour les name j'avais un tableau id_salle[].
Je met mon formulaire en php cette fois si avec les name=id_salle[]
Je précise aussi que ce formulaire fonctionnait parfaitement quand je récuperais mes checkbox en php avec un foreach().
merci d'avance
En plus, tu confonds aussi les checkbox avec les radio ! Ton script peut mal de fonctionner puisque tu ne peux pas avoir plusieurs checkbox avec le même name.
Ah je ne savais pas ça. Mais à la base pour les name j'avais un tableau id_salle[].
Je met mon formulaire en php cette fois si avec les name=id_salle[]
$echo .= "<form id='form_affectation' onsubmit='affecter($id_logiciel); vider_div(\"tableau_logiciels_salles\"); return false;'>"; while ($res=mysql_fetch_array($result)) { $echo .= "<input type=checkbox name='salle_id[]' value=".$res['idSalle']." />".$res['numSalle']." (".$res['nomSite'].")<br>"; } $echo .= <input type='submit' value='Afficher'>"; $echo .= "</form>";
Je précise aussi que ce formulaire fonctionnait parfaitement quand je récuperais mes checkbox en php avec un foreach().
merci d'avance
Cool ça marche.
j'ai fais ça :
Ce qui revient au même que ce que tu as fais (encore merci :D )
Me reste plus qu'a trouver comment passer toutes mes variables avec $post (je l'avais oublié ça) mais le plus gros en fait !
j'ai fais ça :
function affecter(id_logiciel, nbrCheckbox) { var nbrCheckbox = nbrCheckbox; for(i=1 ; i <= nbrCheckbox ; i++) { var currentCheckbox = document.getElementById("salle_" + i); if(currentCheckbox.checked) { alert(currentCheckbox.name + " est coché"); } } return false; }
Ce qui revient au même que ce que tu as fais (encore merci :D )
Me reste plus qu'a trouver comment passer toutes mes variables avec $post (je l'avais oublié ça) mais le plus gros en fait !
J'ai un formulaire en php.
Apprenez à utiliser des termes correctes ! Ton formulaire est en (x)HTML !
En plus, tu confonds aussi les checkbox avec les radio !
Ton script peut mal de fonctionner puisque tu ne peux pas avoir plusieurs checkbox avec le même name.
Apprenez à utiliser des termes correctes ! Ton formulaire est en (x)HTML !
En plus, tu confonds aussi les checkbox avec les radio !
Ton script peut mal de fonctionner puisque tu ne peux pas avoir plusieurs checkbox avec le même name.
L'intérêt des "checkbox", comparés au "radio", c'est justement de pouvoir avoir plusieurs éléments de même name dans $_POST['name'].
$_POST['name'] sera alors un tableau de valeur. Ce qui peut être TRÈS utile pour sélectionner des messages à supprimer par exemple...
Personnellement, je ne vois pas l'intéret d'utiliser des checkbox si c'est pour ne pas récupérer plusieurs valeurs... si tu veux seulement une seule valeur, il y a les radio.
$_POST['name'] sera alors un tableau de valeur. Ce qui peut être TRÈS utile pour sélectionner des messages à supprimer par exemple...
Personnellement, je ne vois pas l'intéret d'utiliser des checkbox si c'est pour ne pas récupérer plusieurs valeurs... si tu veux seulement une seule valeur, il y a les radio.
Mon formulaire est à la base en php
Non ! Tu écris son code source XHTML avec des echo en PHP, ce qui revient à du simple (x)HTML pour le navigateur
Par contre, je ne vois pas trop bien ce que tu veux faire.
Autre info : si tu veux vérifier si un checkbox est coché, utilise ".checked" qui renverra true si c'est le cas.
Non ! Tu écris son code source XHTML avec des echo en PHP, ce qui revient à du simple (x)HTML pour le navigateur
Par contre, je ne vois pas trop bien ce que tu veux faire.
Autre info : si tu veux vérifier si un checkbox est coché, utilise ".checked" qui renverra true si c'est le cas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Non ! Tu écris son code source XHTML avec des echo en PHP, ce qui revient à du simple (x)HTML pour le navigateur
Ah excuse moi alors...
Ce que je veux faire c'est récupérer les valeurs des chexbox cochés (pas les autres) dans une fonction pour pouvoir les passés avec la méthode $post dans un autre document php. Puis les récupérer sous forme de tableau (en php).
Un .checked ne me permet pas de récupérer la valeur :x
Ah excuse moi alors...
Ce que je veux faire c'est récupérer les valeurs des chexbox cochés (pas les autres) dans une fonction pour pouvoir les passés avec la méthode $post dans un autre document php. Puis les récupérer sous forme de tableau (en php).
Un .checked ne me permet pas de récupérer la valeur :x
Ah excuse moi alors...
Pas besoin de t'excuser, mais j'espère que tu as compris que dans ce genre de problème, savoir que tu utilises du PHP ne sert à rien du tout car le problème est côté client.
Essaye avec ça :
Pas besoin de t'excuser, mais j'espère que tu as compris que dans ce genre de problème, savoir que tu utilises du PHP ne sert à rien du tout car le problème est côté client.
Essaye avec ça :
function affecter(id_logiciel)
{
var salle = new Array();
salle .= $("#form_affectation").find("input[name=salle_id]").val();
alert(salle.length);
$.post("jQuery/affecter.php", { salle: salle },
function success(data){
$('#tableau_affectation').html(salle);
});
}
J'avais déjà essayé avec des crochets mais pas le point et ça ne marchait pas. Apparemment là non plus :x
Question surement très idiote mais est il possible en JavaScript de mettre des variables pour les nom de variables ?
Question surement très idiote mais est il possible en JavaScript de mettre des variables pour les nom de variables ?
Question surement très idiote mais est il possible en JavaScript de mettre des variables pour les nom de variables ?
Je suppose que oui, mais je ne sais pas comment (essaye comme en PHP).
Je te propose une autre méthode :
Mets un id différent pour chaque checkbox, et à chaque fois que tu en insères une, tu insères aussi un script JS qui ajoutera l'ID dans un array. Ainsi, il te suffira de parcourir l'array pour avoir tous les ID et pouvoir récupérer les valeurs.
Je suppose que oui, mais je ne sais pas comment (essaye comme en PHP).
Je te propose une autre méthode :
Mets un id différent pour chaque checkbox, et à chaque fois que tu en insères une, tu insères aussi un script JS qui ajoutera l'ID dans un array. Ainsi, il te suffira de parcourir l'array pour avoir tous les ID et pouvoir récupérer les valeurs.
J'ai pas très bien compris...
Tu veux que je fasse un truc comme ça?
Mais le problème c'est qu'a chaque fois le tableau se réinitialise.
En plus il y aura toutes les checkbox, or certaines peuvent ne pas etre coché par l'utilisateur.
Et je serait quand meme obligé de passer le tableau en paramètre pour ma fonction affecter
Non?
Tu veux que je fasse un truc comme ça?
$echo .= "<form id='form_affectation' onsubmit='affecter($id_logiciel); vider_div(\"tableau_logiciels_salles\"); return false;'>"; while ($res=mysql_fetch_array($result)) { function ajouter($res['numSalle']); $echo .= "<input type=checkbox name=".$res['numSalle']" value=".$res['idSalle']." />".$res['numSalle']." (".$res['nomSite'].")<br>"; } $echo .= <input type='submit' value='Afficher'>"; $echo .= "</form>";
fonction ajouter(numSalle) { var tableau = new Array('numSalle'); tableau = tableau.push(numSalle); }
Mais le problème c'est qu'a chaque fois le tableau se réinitialise.
En plus il y aura toutes les checkbox, or certaines peuvent ne pas etre coché par l'utilisateur.
Et je serait quand meme obligé de passer le tableau en paramètre pour ma fonction affecter
Non?
Mais le problème c'est qu'a chaque fois le tableau se réinitialise
Voilà ton script :
Voilà ton script :
fonction ajouter(numSalle)
{
var tableau = new Array('numSalle');
tableau = tableau.push(numSalle);
}
C'est assez voyant ?
Bah oui mais je ne vois pas comment faire autrement.
Il faut bien l'initialiser au départ et on ne peut le faire que dans la fonction...
Je ne vois vraiment pas comment faire et pourtant c'est banale comme truc. Je ne trouve rien sur internet ! N'y a t'il personne qui fait ça?
Il faut bien l'initialiser au départ et on ne peut le faire que dans la fonction...
Je ne vois vraiment pas comment faire et pourtant c'est banale comme truc. Je ne trouve rien sur internet ! N'y a t'il personne qui fait ça?
De toutes façon, tu appeles la fonction JS depuis le PHP, c'est impossible !
Ensuite, tu ne peux pas transmettre un array depuis POST ni par GET
Ensuite, tu ne peux pas transmettre un array depuis POST ni par GET
De toutes façon, tu appeles la fonction JS depuis le PHP, c'est impossible !
Je suis d'accord avec toi.
Ensuite, tu ne peux pas transmettre un array depuis POST ni par GET
Bon bah je n'ai plus qu'a trouver une autre solution..
Merci quand même ++
Je suis d'accord avec toi.
Ensuite, tu ne peux pas transmettre un array depuis POST ni par GET
Bon bah je n'ai plus qu'a trouver une autre solution..
Merci quand même ++
Ahhh merci avion-f16 !! Je commençais à désespérer sérieusement :x
Je n'ai plus qu'a remplacer "var nbCheckbox = 5;" par "var nbCheckbox = $nbrCheckbox" et ça va fonctionner!
Je n'ai plus qu'a remplacer "var nbCheckbox = 5;" par "var nbCheckbox = $nbrCheckbox" et ça va fonctionner!