2010-11-09 21 views
1

Je suis totalement perplexe et toute aide est appréciée.utiliser une variable lors du réglage de l'option select: sélectionné dans jquery find() IE7 problème

extrait de code:

$specialIFrame.contents().find("#flavorPara select#productList option[value="+$varietal_code+"]").attr("selected","selected"); 

$specialIFrame est un iframe, les valeurs du menu de sélection sont tirés d'un autre iframe sur la page. Le code ci-dessus définit correctement l'option sélectionnée dans FF et Chrome, mais pas dans IE7. Quand je teste la valeur de $varietal_code avec une alerte(); Je reçois la valeur numérique correcte. Quand je code dur dans une valeur valide au lieu de la variable $varietal_code le fonctionne au-dessus correctement même dans IE7. Mais lorsque j'utilise ce qui précède dans IE7, sur une machine Windows Vista, le menu de sélection par défaut à la première option.

Je voudrais inclure tout le code mais il est tellement verbeux J'espère que mon problème est dans le code ci-dessus seulement. J'ai également essayé .attr('selected',true); en vain.

Je suppose que ma concaténation est le problème? Merci d'avance, Stack Overflow a toujours eu des réponses à mes questions mais c'est la première fois que je pose une question.

J'ajoute toute la fonction, cela peut être un problème plus profond que ce que je pensais:

$specialIFrame.contents().find('#selectWinePopup a').click(function() { 
      var $varietal_code = $(this).attr('href').replace('#',''); 
    var $varietal_name = $(this).text();  
    //alert('code ' + $varietal_code + ' name ' + $varietal_name); 
    //$specialIFrame.contents().find('#flavorPara #productList > option[value="'+$varietal_code+'"]').attr("selected", "selected"); 
    $specialIFrame.contents().find("#flavorPara select#productList option[value="+$varietal_code+"]").attr("selected", "selected"); 
    //$specialIFrame.contents().find('#flavorPara #productList').val($varietal_code); 
    //$specialIFrame.contents().find("#flavorPara select#productList option[value="+$varietal_code+"]").selectedIndex = 1; 
    //alert($varietal_code); 
    $specialIFrame.contents().find('#selectWinePopup').hide(); 
    $specialIFrame.contents().find('#flavorPara').removeClass('active'); 
    $specialIFrame.contents().find('#flavorPara').css("background-image","url('/resources/images/ftrWineSelect.jpg')"); 
    var $starttext = $specialIFrame.contents().find('#flavorPara #showflavor').text(); 
    var $newtext = $specialIFrame.contents().find('#flavorPara select#productList option:selected').text(); 
    var $valtext = $specialIFrame.contents().find('#flavorPara select#productList option:selected').val(); 
    //alert($newtext); 
    alert($valtext); 
    $specialIFrame.contents().find('#flavorPara #showflavor').text($varietal_name); 
    //alert('code ' + $varietal_code + ' name ' + $varietal_name); 
    }); 

je quittais mes propres tests et alertes dans tout le monde peut voir de mes tests.

+2

Essayez ceci: '$ specialIFrame.contents(). Find (" # productList ") .val ($ varietal_code);' –

Répondre

0

Avez-vous vérifié que $varietal_code n'a pas d'espace? J'ai eu des problèmes où les variables ont des espaces aléatoires seulement dans IE7 avant et la solution était de dépouiller les espaces.

var strip = function(s) { 
    return String(s).replace(/^\s+|\s+$/g, ''); 
}; 

$varietal_code = strip($varietal_code); 

avant votre code.

+0

Je vais essayer, en plus j'ai trouvé cette entrée qui peut m'aider. Je publierai des mises à jour/résultats http://stackoverflow.com/questions/3544086/most-correct-way-to-select-option-in-select-box – Cecilia

+0

J'ai essayé strip(), ça n'a pas réglé le problème mais je suis reconnaissant pour l'info pour référence future. – Cecilia

+0

argh, ces bugs spécifiques sont si frustrants :) Comme vous l'avez dit, "Quand je code dur dans une valeur valide au lieu de la variable $ varietal_code ce qui fonctionne correctement même dans IE7" ce que je ferais est de regarder de très près ce que La variable se maintient dans ie7 juste avant de construire le sélecteur en utilisant la concaténation de chaîne. Je voudrais également regarder de près le sélecteur qui en résulte. Peut-être alerter chacun d'eux, et il doit y avoir une différence quelque part entre le sélecteur codé en dur qui fonctionne, et ce que vous finissez par construire en concaténant les cordes. –