2011-07-18 5 views
1

私は選択フィールドを生成し、生成時に適切なオプションを選択する小さなスクリプトを用意しています。IEでプログラムでオプションを選択する

options.each(function (option) { 
    var optionString = "<option id='" + option.id + "' value='" + option.value + "'>" + option.text + "</option>"; 
    $('selectField').insert(optionString); 
    if(option.selected) { 
     toBeSelected = option.id; 
    } 
}); 
$(toBeSelected).setAttribute('selected','selected'); 

今、上記のスクリプトはChromeとFirefoxで正常に動作しますが、IEで、それは常にリストの最後の要素を選択します:それは少しこのようになります。だから私はオプションのリストを生成していたと言う['a','b','c','d']、 'd'は常に選択されます。

これを引き起こしている可能性のあるアイデアは誰かありますか?

UPDATE:
さて、私はこの解決策を見つけて、それは少し、以下のように、手動オプションノードを生成して「挿入」を置き換える関与:

var newOption = document.createElement('option'); 
newOption.setAttribute('value',option.value); 
newOption.innerHTML = option.text; 
if(option.selected) { 
    newOption.selected = true; 
} 

$('selectField').appendChild(newOption); 

私は推測しています問題はプロトタイプがどのように動作するかとうそつきましたが、問題は解決してうれしいです。

8時間が私自身の質問に答えると、これを回答として再フォーマットします。この

+0

option.selectedの値は何ですか? –

+0

それはboolなので、 'true'か' false'のどちらかです。 – Geoff

+2

IEで何が起こっているかを知るために、すべてのoption.selectedに警告することをお勧めします。また、私はoption.selectedでif文を置き換えます。=== true – zatatatata

答えて

0

オーケーで、あなたの入力のための

ありがとうすべては、私はこの解決策を見つけ、そしてそれは、手動で次のようなビットをオプション・ノードを生成して「挿入」を置き換える関与:

var newOption = document.createElement('option'); 
newOption.setAttribute('value',option.value); 
newOption.innerHTML = option.text; 
if(option.selected) { 
    newOption.selected = true; 
} 

$('selectField').appendChild(newOption); 

私は問題が解決されたことをうれしく思っていますが、prototypeのinsert()がどのように動作するのかと嘘をつきました。

2
var options = new Array(); 

options.push({id:1,value:'one',text:'text1',selected:false}); 
options.push({id:2,value:'two',text:'text2',selected:true}); 
options.push({id:3,value:'three',text:'text3',selected:false}); 
options.push({id:4,value:'four',text:'text4',selected:false}); 

var toBeSelected; 
options.each(function(option) { 
    var optionString = "<option id='" + option.id + "' value='" + option.value + "'>" + option.text + "</option>"; 
    $('selectField').insert(optionString); 
    if (option.selected == true) 
    { 
     toBeSelected = option.id+""; // +"" because have to be a string 
    } 
}); 

$(toBeSelected).selected = true; 
+0

私はこれを試しても、同じ結果を得ています。私はifステートメントに警告を出し、特定の 'toBeSelected'が正しく設定されています。 – Geoff

+0

編集された回答;) – ChristopheCVB

関連する問題