обозреватель не работает в IE - PullRequest
5 голосов
/ 02 марта 2010

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

Мой тег ruby ​​выглядит так:

<%= 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 Ответ

1 голос
/ 02 марта 2010

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

Используя приведенный ниже код, я могу частично заставить его работать на IE. Он уменьшает счетчик при вводе символов, но по какой-то причине клавиши Delete, Backspace и курсор не работают при использовании 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...