代码之家  ›  专栏  ›  技术社区  ›  oillio

观察者不在IE中工作

  •  5
  • oillio  · 技术社区  · 15 年前

    在我的RubyonRails应用程序中,我试图使用一个原型form.element.observer来运行消息中的字符数。这在firefox/safari/chrome上很好用,但在ie上不行。在ie上,观察者根本不会开火。有什么方法可以解决这个问题吗?

    我的红宝石标签如下:

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

    倒计时字段函数如下:

      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 回复  |  直到 13 年前
        1
  •  1
  •   John Topley    15 年前

    首先,您需要为您的 <textarea> 元素,因为它不能自动关闭,并且 cols rows 属性是必需的。

    使用下面的代码,我可以部分地让它在IE中工作。当您键入字符时,计数器会递减,但由于某种原因,使用IE6时,删除键、退格键和光标键不起作用!使用火狐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>
    
    推荐文章