11497 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

je tente de récupérer l'état de plusieurs checkbox... Mais elles n'ont aucun effet sur ma page sans que je puisse comprendre pourquoi.. alors que je n'ai pas de problème pour récupérer la valeur d'un menu déroulant par exemple.

Pour tester j'ai mis un code jquery censé m'envoyer l'id de la checkbox cochée, mais sans effet...

$(document).ready(function(){
    $("input[type=checkbox]").change(function(){
             alert($(this).attr("id"));

    });
}); 


mon html
<label><input type="checkbox" value="2" id="2">mon option </label>


Auriez-vous une idée du pourquoi du comment ? ^^

merci
Modifié par esk57 (02 Apr 2014 - 14:18)
Personnellement, quand j'utilise ton code, ça fonctionne bien : j'ai bien un pop-up contenant l'ID de la checkbox cochée (ou décochée) qui s'affiche.

Question bête : tu es bien sûr la référence à jquery est bonne ? Contrôle dans le code source de ta page si tu as bien quelque chose derrière le lien référençant ton jquery.js
Si ça se trouve, c'est juste une bêtise comme ça Smiley smile

Manu
ManuB28 a écrit :
Personnellement, quand j'utilise ton code, ça fonctionne bien : j'ai bien un pop-up contenant l'ID de la checkbox cochée (ou décochée) qui s'affiche.

Question bête : tu es bien sûr la référence à jquery est bonne ? Contrôle dans le code source de ta page si tu as bien quelque chose derrière le lien référençant ton jquery.js
Si ça se trouve, c'est juste une bêtise comme ça Smiley smile

Manu



Merci Manu pour ta réponse,

mon js est appelé dans mon head de façon classique..
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>


J'ai d'autres éléments utilisant jquery sur la page qui fonctionne sans problème. Effectivement le code fonctionne sur une page neutre.. du coup j'ai testé autre chose..

Car ces checkbox sont chargées lors d'un appel à ma bdd. Et en fait c'est uniquement ces checkbox dont la valeur n'est pas récupérée, si je met des checkbox en "dur" ça marche..

du coup le prob vient du fait que ce sont des checkbox chargées après une action sur la page.. Comme si elles n'étaient alors pas considérées par jquery malgré qu'elles soient belle et bien existantes dans le html...

Mes checkbox sont insérées sur la page via un jquery du genre...

$("div#checkbox").html(data);


Du coup ma question serait plutot comment récupérer l'attribut "checked" d'un <input type=checkbox> qui n'est pas chargé au chargement de la page mais plus tard lors d'une action sur un autre élément... ?
Dans ce cas, il faut que ton code soit attaché aux checkbox après qu'ils aient été posés dans la page.

Au lieu de coller ta fonction dans le $(document).ready(), attache là aux checkbox après les avoir chargé dans la page.

Un truc de ce genre sans doute :

$("div#checkbox").html(data);
$("input[type=checkbox]").change(function(){
       alert($(this).attr("id"));
});


Manu
ManuB28 a écrit :
Dans ce cas, il faut que ton code soit attaché aux checkbox après qu'ils aient été posés dans la page.

Au lieu de coller ta fonction dans le $(document).ready(), attache là aux checkbox après les avoir chargé dans la page.

Un truc de ce genre sans doute :

$(&quot;div#checkbox&quot;).html(data);
$(&quot;input[type=checkbox]&quot;).change(function(){
       alert($(this).attr(&quot;id&quot;));
});


Manu



Effectivement, bonne piste ! Merci Smiley smile
Tu peux également ajouter dynamiquement des événements sur des éléments qui sont chargés après le JS.

$(document).on("change", "input[type=checkbox]", function(){
       //ton script
});


A+