2010-12-07 3 views
2

J'essaye de déboguer quelque chose qui ne fonctionne pas sur n'importe quelle version d'Internet Explorer.Pourquoi cela ne fonctionne-t-il pas sur Internet Explorer? [jQuery, radio, sélecteurs]

Voici le code:

<div id="sondage"> 
    <input type="radio" name="reponse" value="oui" id="oui"> 
    <label for="oui">Oui</label> 

    <input type="radio" name="reponse" value="non" id="non"> 
    <label for="non">Non</label> 
</div> 

<script type="text/javascript" charset="utf-8"> 
$(function(){ 

    $('#oui, #non').click(function(){ 
     reponse = $('input[name=reponse]:checked').val(); 
     sondage_id = <?php echo $sondage->id ?>; 

     $.ajax({ 
      type: "GET", 
      url: "<?php echo url_for('@sondage_repondre') ?>", 
      data: "reponse="+reponse+"&id="+sondage_id, 
      success: function(msg){ 
       resultat = msg.split('|'); 

       if (resultat[0] == "true") { 
        $('#sondage_message').html("<?php echo __('Merci.') ?>"); 
       } else { 
        $('#sondage_message').html("<?php echo __('Désolé, vous avez déjà voté pour ce sondage. Merci.') ?>"); 
       } 
       $('#sondage').html(resultat[1]); 
      } 
     }); 

    }); 

}); 
</script> 

L'erreur se produit sur cette ligne (reponse = $('input[name=reponse]:checked').val();).

Avez-vous une idée de ce qui se passe?

Merci!

EDIT: Comme demandé: l'erreur est:

Line 511, Char 7, Object doesn't support this property or method. 

Et voici la sortie complète: http://pastie.org/1355610

Merci encore!

+1

Etes-vous sûr que c'est la ligne qui provoque l'erreur? Je ne fais pas confiance aux numéros de ligne d'IE, mais vous pouvez le vérifier en codant en dur cette valeur, et voir si cela fonctionne. Quelle erreur obtenez-vous? Pourriez-vous s'il vous plaît mettre à jour votre question avec le code rendu ("view source") au lieu de la source réelle? Le ' id' donne une chaîne, ou une valeur vide, par exemple, cela va casser sur n'importe quel navigateur. –

+0

Vous avez totalement raison, j'ai mis à jour le problème. Merci :) – TomShreds

+0

Quel est le message d'erreur que vous obtenez d'IE? – Phrogz

Répondre

5

vous manque un var là-dedans, il devrait être:

var reponse = $('input[name=reponse]:checked').val(); 

va de même pour vos autres variables ... toujours utiliser var de les déclarer, peu importe où ils sont, ne le font pas dépend d'une définition globale implicite qui n'est pas toujours autorisée.

+0

mais il est parfaitement valide pour déclarer implicitement des variables. cela ne devrait pas faire que le script se termine. Certes, une meilleure pratique de codage permet de déclarer explicitement des variables. – Metagrapher

+0

@metagrapher pas dans Internet Explorer! – Pointy

+0

@Metagrapher - ce n'est pas * valide *, c'est * autorisé * dans certains cas. Dans les deux, c'est une mauvaise pratique. –

Questions connexes