Динамический комбо и метод get mootools не работают в IE8 - PullRequest
0 голосов
/ 11 июля 2011

У меня проблема с методом Mootools get и IE8. Это вещь.

У меня есть комбо select, которое динамически загружает опции с 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 выдает мне ошибку:

Объект не поддерживает это свойство или метод.

Не знаю почему, но

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

не работает с IE8 (как обычно, отлично работает с другими браузерами). Я использую Mootools 1.3.2

Есть идеи? Большое спасибо.

1 Ответ

1 голос
/ 11 июля 2011

вы не можете обновлять содержимое <select> элементов через innerHTML кросс-браузерным способом, который update: $("model") будет пытаться сделать.

Я бы предложил рефакторинг через onComplete: function() {}, где вы:

  • удаляете все дочерние элементы model
  • , перебираете элементы опций, отправленные через HTML, и вводитеони в model
  • вызывают любой метод, который предоставляет ваш пользовательский стиль (если он есть), чтобы освежить элементы объекта для model и fireEvent("change"), чтобы выделить ваш новый выбранный выбор для сценариев, если он вам нужен.

за ваш второй вопрос.

this.options.get("value") возвращает выбранное значение.

, если выбрано несколько, оно может иметь более 1 значения.

mootools предоставляет selectel.getSelected(), который возвращает массив опций, которые вы можете использовать для получения текста.следовательно:

selectel.getSelected().get("text") вернет ["sometext"] или ["sometext1", "sometext2"] при множественном выборе.

...