2011-07-11 53 views
0

我的Mootools get方法和IE8有問題。這是事情。動態組合和mootools get方法在IE8中不起作用

我有一個動態加載與Request.HTML

HTML選項的選擇組合:

<select name="model" id="model" class="customSelectModel"> 
    <option>Modelo</option> 
</select> 

的Javascript:

var req = new Request.HTML({ 
     method: 'get', 
     url: loadModels, 
     data: "model="+model, 
     update: $('model'), 
}).send(); 

此外,選擇具有自定義樣式,與此:http://vault.hanover.edu/~stilson/simpleselectstyle/

問題是當我加載的model內容,IE扔我的錯誤:

Object doesn't support this property or method.

我不知道爲什麼,但

span.addEvent('change',function(){ 
    span.set('text',this.options[this.options.selectedIndex].get('text')); 
}); 

不與IE8的工作(如通常情況下,它與其他瀏覽器完美的作品) 。我正在使用Mootools 1.3.2

任何想法?非常感謝。

回答

1

您不能更新一個跨瀏覽器的方式,其中update: $("model")嘗試辦通過innerHTML<select>元素的內容。

我會通過onComplete: function() {}建議重構操作如下:

  • 刪除model
  • 迭代的所有子元素經由HTML格式發送選項元素,並將它們注入到model
  • 調用任何方法定製樣式提供(如果有的話)爲新對象成員更新modelfireEvent("change")以突出顯示新選定的腳本選擇,如果需要的話。

您的第二個問題。

this.options.get("value")返回選定值。

如果它是一個多選,它可以有多個值。

mootools提供了selectel.getSelected(),它返回一個可以迭代以獲取文本的選項數組。因此:

selectel.getSelected().get("text")將在多重選擇上返回["sometext"]["sometext1", "sometext2"]

+0

謝謝@Dimitar。正如你解釋,刪除的選擇所有子.empty()之後,我已經試過這個'responseElements.each(功能(E迭代){\t \t \t \t \t \t \t \t即注($( '模型')); \t \t \t \t \t \t \t});'但它在IE中不起作用。我做錯了什麼? – Manu

+0

謝謝,夥計。我無法相信INTERNET EXPLORER如何制定自己煩人的規則,以及我們需要如何尋找解決方法......因此,在注入之前,解決方案是在選擇中包裝'',但我會無論如何請嘗試JSON。 – Manu

+0

很奇怪。 http://jsfiddle.net/mpSsJ/4/ - >在jQuery中試過它,它的工作原理。所以他們必須在代碼中有一個解決方法(我不是jQuery用戶,所以這是一個實驗)。去圖 - 與一些沒有留下深刻印象的mootools的核心開發者討論。 –