2011-07-11 11 views
0

Mootools getメソッドとIE8に問題があります。これが事です。動的コンボとmootools getメソッドがIE8で動作しない

<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(); 

また、選択は、カスタムスタイルを持っている私はRequest.HTML

HTMLを動的にオプションをロード選択コンボを持って

これで:http://vault.hanover.edu/~stilson/simpleselectstyle/

問題は私が読み込むときです

Object doesn't support this property or method.

私はなぜ知らないが、(通常は、それは他のブラウザでは完璧に動作として)

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

はIE8で動作しません:modelの内容、IEは私にエラーを投げます。私はMootools 1.3.2を使用しています

アイデア?どうもありがとう。

答えて

1

あなたはupdate: $("model")が何しようとするクロスブラウザファッション、中innerHTML経由<select>要素の内容を更新することはできません。

私はあなたonComplete: function() {}を経由して、リファクタリングを示唆している:

  • はHTMLを経由して送信されたオプションの要素をmodel
  • 反復のすべての子要素を削除してmodel
  • コールどんな方法カスタムにそれらを注入スタイリングでは、modelfireEvent("change")のオブジェクトメンバーをフレッシュにして、必要に応じて新しい選択したスクリプトの選択肢を強調表示します(あれば)。

あなたの2番目の質問です。

this.options.get("value")は選択した値を返します。

複数選択の場合、1つ以上の値を持つことができます。

mootoolsは、テキストを取得するために反復処理できるオプションの配列を返すselectel.getSelected()を提供します。したがって:

selectel.getSelected().get("text")は、複数選択で["sometext"]または["sometext1", "sometext2"]を返します。

+0

ありがとう@Dimitar。あなたは).empty(と選択のすべての子を削除した後、説明したように、私はこの 'responseElements.each(関数(E){\t \t \t \t \t \t \t \t電子と反復しようとしました。注射($( 'model')); \t \t \t \t \t \t \t});しかし、IEでは動作しません。私は間違っているの?ありがとう、仲間。 – Manu

+0

私はインターネットエクスプローラーがどうやって自分の迷惑なルールを作っているのか、その回避策を見つけ出す方法は信じられません...したがって、解決策は、それを注入する前に ''を選択してラップすることですとにかくJSONを試してみてください。 – Manu

+0

奇妙なことに。 http://jsfiddle.net/mpSsJ/4/ - > jqueryで試してみるとうまくいきます。彼らはコードでこれを回避する必要があります(私はjqueryユーザーではありませんので、これは実験でした)。 go figure - 感動しなかったmootoolsのコア開発者と話し合った。 –

関連する問題