2010-03-02 4 views
5

В моем приложении ruby ​​on rails Я пытаюсь использовать Prototype Form.Element.Observer для запуска подсчета символов в сообщении. Это отлично работает на Firefox/Safari/Chrome, но не на IE. На IE наблюдатель просто не срабатывает. Есть ли исправление или другой способ сделать это?observer не работает в IE

Мой рубиновый тег выглядит следующим образом:

<%= countdown_field('txtmsg[memo]','memo-counter', 141, :frequency => 0.10) %> 

Функция countdown_field выглядит следующим образом:

def countdown_field(field_id,update_id,max,options = {}) 
    function = "$('#{update_id}').innerHTML = (#{max} - $F('#{field_id}').length);" 
    count_field_tag(field_id,function,options) 
    end 

    def count_field_tag(field_id,function,options = {}) 
    out = javascript_tag function, :defer => 'defer' 
    out += observe_field(field_id, options.merge(:function => function)) 
    return out 
    end 

Результирующий HTML выглядит следующим образом:

<textarea class="memo-tag text txtmsg-memo" id="txtmsg[memo]" name="txtmsg[memo]" /> 
<p>You have <span id="memo-counter">...</span> characters left.</p> 

<script defer="defer" type="text/javascript"> 
    $('memo-counter').innerHTML = (141 - $F('txtmsg[memo]').length); 
</script> 
<script type="text/javascript"> 
    new Form.Element.Observer('txtmsg[memo]', 0.1, function(element, value) { 
        $('memo-counter').innerHTML = (141 - $F('txtmsg[memo]').length);}) 
</script> 

ответ

1

Прежде всего вам необходимо добавить закрывающий тег для вашего элемента <textarea>, потому что он не может быть самозакрывающимся, а t он cols и rows атрибуты являются обязательными.

Используя приведенный ниже код, я могу частично заставить его работать для IE. Он уменьшает счетчик при вводе символов, но по какой-то причине клавиши Delete, Backspace и cursor не работают при использовании IE6! Он отлично работает с Firefox 3.6.

<textarea class="memo-tag text txtmsg-memo" id="txtmsg[memo]" cols="40" rows="2" name="txtmsg[memo]"></textarea> 
<p>You have <span id="memo-counter">...</span> characters left.</p> 
<script type="text/javascript"> 
    new Form.Element.Observer("txtmsg[memo]", 0.1, function(element, value) { 
    $("memo-counter").update(141 - value.length); 
    }); 
</script> 
+0

Да, я случайно удалил закрывающий тег, когда я форматировал свой вопрос. Добавил его обратно и добавил столбцы и строки. Все еще не работает. – oillio

+0

Оказалось, что это ошибка, вызванная javascript, сгенерированная моей картой. Спасибо, в любом случае. – oillio

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