2009-10-12 2 views
0

Я новичок в js, и я боюсь, что у меня нет знаний для решения следующей проблемы.Создание элемента select через js, фокус не работает в IE

Если у меня есть выберите элемент (заполняется с несколькими вариантами) уже разобраны браузером на нагрузке, следующий код работает нормально как в IE и FF

$('selectId').focus(); 

, но если я создаю (и заполнить это) элемент через js

var select = new Element('select',{ 'id':'selectId' }); 
~ etc. with options ~ 
select.focus(); 

событие фокусировки не работает в IE. С FF все в порядке!

Я уже пробовал различные методы для решения этой проблемы, но без хороших результатов! Каждый раз, когда мне нужно щелкнуть элемент, чтобы активировать событие фокусировки (в IE).

(да, я использую библиотеку Mootools!)

Любая помощь будет очень признателен!

Спасибо!

+1

Правильно ли предположить, что вы действительно добавляете выделение в DOM? – Matt

+0

да, мой друг! ;) Элемент правильно добавлен в DOM и отлично работает , за исключением того, что в IE теряет фокус, который я ему дал. Firebug и консоль IE не дают никаких ошибок js ... Спасибо за помощь! – 2009-10-12 19:10:01

+0

Вы можете воспроизвести проблему для нас на jsbin.com? – Matt

ответ

0

@Christoff Спасибо, мой друг! Я боюсь, что я должен использовать версию 1.11 mootools, потому что проект основан на последней версии Joomla (1.5.14), которая поддерживает только 1.11 mootools ... Я попытался вызвать право на событие click после создания элемента (как вы делали в примере) и, похоже, работает, а не на 100%, но работает. Единственная проблема заключается в том, что если вы нажмете кнопку FIRST, сразу после появления выбора вы получите предупреждение о значении предварительно выбранного! Если вы нажмете любую другую опцию, предупреждение вернет правильное значение! Странный! (Я всегда говорю для браузера IE7-8!)

Кроме того, я скопировал код с mooshel на jsbin.com (http://jsbin.com/axuxi), и у него, похоже, та же проблема. Первый щелчок всегда возвращает значение предварительно выбранного ...

Благодарим за помощь!

+0

возможно, вы обрабатываете неправильное событие здесь. i НИКОГДА не получите первый вариант - в FF 3.5 и ie7. однако я полагаю, что возможно, что событие click непосредственно может срабатывать перед событием onchange, подобно тому, как это делают onkeydown или onkeypress. Я немного переделал вещи здесь http://mooshell.net/tnYBY/ - через onfocus и onchange. он надежно работает imo, но вы можете запустить функцию дважды (например, если вы потеряли фокус, а затем нажмите на новую опцию). постскриптум вам нужен firebug/console, чтобы увидеть это, или заменить на предупреждения. –

Смежные вопросы