2011-02-17 4 views
0

J'essaie de définir un champ de formulaire caché avec la valeur d'un bouton radio sélectionné. J'ai le code suivant:L'enregistrement d'un événement de bouton radio jquery ne fonctionne pas

$(function() { 
     // set hidden form field with selected timeslot 
     $('input[name=["timeslot"]').live("click", (function() { 
      var valu = $(this).val(); 
      alert(valu); 
      $("#selectedSlot").val(valu); 
     })); 
    }); 

Tous les boutons radio ont le nom de « intervalle de temps », et je voudrais exécuter cette fonction à chaque fois qu'un clic est effectué. Toutefois, la zone d'alerte est vide lorsque je clique sur l'un des boutons radio.

MISE À JOUR: Oups! Je n'ai pas vu les doubles crochets. Cependant je l'ai fixé:

 $('input[name="timeslot"]').live("click", (function() { 
      var valu = $(this).val(); 
      alert(valu); 
      $("#selectedSlot").val(valu); 
     })); 

et je suis toujours avoir le même problème. En fait, la boîte d'alerte ne vient même plus pour une raison quelconque.

MISE À JOUR 2: En fait, dans mon code réel, j'ai d'autres événements enregistrés dans mon bloc d'initiation en plus de celui-ci - si je les supprime tous sauf le bouton radio un, ça marche!

Par exemple, si j'ai ceci:

$(function() { 
     // set hidden form field with selected interviewee 
     $('#interviewees').live("change", (function() { 
      var selected = $("#interviewees").val(); 
      $("#selectedInterviewee").val(selected); 
     })); 
     // set hidden form field with selected timeslot 
     $('input[name="timeslot"]').live("click", (function() { 
      var valu = $(this).val(); 
      alert(valu); 
      $("#selectedSlot").val(valu); 
     })); 
    }); 

puis sur le bouton radio en cas de clic ne se déclenche pas, bien que le premier (une liste déroulante) fait. Mais si j'ai le bouton radio tout seul, c'est le cas. Des idées????

Les balises d'entrée ressemblent à ceci:

<input id="slot_7:30-AM" name="timeslot" type="radio" value="slot_7:30-AM" /> 

J'utilise IE 8 la plupart du temps, mais j'ai essayé cela sur Firefox et la même chose. Qu'est-ce que je fais mal?

+0

Et à quoi ressemble votre code html? –

+0

@David - quel autre HTML (autre que le tag d'entrée) avez-vous besoin de voir? – Cynthia

Répondre

0

OK, je l'ai eu à travailler en inversant l'ordre des inscriptions à des événements:

$(function() { 
     // set hidden form field with selected timeslot 
     $('input[name="timeslot"]').live("click", (function() { 
      var valu = $(this).val(); 
      alert(valu); 
      $("#selectedSlot").val(valu); 
     })); 
     // set hidden form field with selected interviewee 
     $('#interviewees').live("change", (function() { 
      var selected = $("#interviewees").val(); 
      $("#selectedInterviewee").val(selected); 
     })); 
    }); 

Ugh. Je reviens à mon avis que javascript est un désordre flakey. Mais pour une raison quelconque, cela fonctionne maintenant.(Les deux travaillent maintenant ... très particulier.)

+0

attention: .live() est obsolète depuis la version 1.7 et a été supprimé dans jquery 1.9. Utilisez .on() pour attacher des gestionnaires d'événements pour le moment. – NDY

0

Sans voir votre code html, je ne peux pas être tout à fait sûr, mais je pense le problème est le sélecteur que vous utilisez:

$('input[name=["timeslot"]') 

Il y a au moins deux problèmes qui pourraient causer des problèmes:

  1. la unclosed-support de carré, et
  2. l'utilisation de crochets à l'intérieur du sélecteur d'attribut. Essayez d'utiliser: $('input[name="timeslot"]') à la place.


Edité en réponse aux commentaires à la réponse ci-dessous.

Ce qui suit semble fonctionner:

$('input[name="timeslot"]').live('click', function() { 
    var valu = $(this).val(); 
    alert(valu); 
    $("#selectedSlot").val(valu); 
}); 

JS Fiddle demo.

Je suis, bien sûr, en utilisant une entrée text, plutôt que d'un hidden, mais étant donné que le sélecteur fonctionne sur le id il devrait fonctionner indépendamment du type input.

+0

J'ai corrigé le problème du crochet, mais cela ne fonctionne toujours pas (voir ma mise à jour). Que voulez-vous dire de ne pas voir le HTML? Je montre la balise d'entrée dans mon message. Quel autre HTML aimeriez-vous voir? – Cynthia

+0

s'il vous plaît voir ma mise à jour. Curieux et curieux. – Cynthia

+0

@Cynthia: ouais, * très * bizarre ... J'expérimente actuellement, et je reviendrai vers vous dès que je m'en sortirai. –

Questions connexes