Javascript 观察者不在IE中工作

Javascript 观察者不在IE中工作,javascript,ruby-on-rails,ruby,prototypejs,Javascript,Ruby On Rails,Ruby,Prototypejs,在我的RubyonRails应用程序中,我尝试使用原型Form.Element.Observer来运行消息中的字符计数。这在Firefox/Safari/Chrome上运行良好,但在IE上不起作用。在IE上,观察家根本不会开火。有没有解决办法或其他方法 我的ruby标记如下所示: <%= countdown_field('txtmsg[memo]','memo-counter', 141, :frequency => 0.10) %> def countdown_fiel

在我的RubyonRails应用程序中,我尝试使用原型Form.Element.Observer来运行消息中的字符计数。这在Firefox/Safari/Chrome上运行良好,但在IE上不起作用。在IE上,观察家根本不会开火。有没有解决办法或其他方法

我的ruby标记如下所示:

<%= 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
<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>
生成的HTML如下所示:

<%= 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
<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>

你有。。。剩下的字符

$('memo-counter').innerHTML=(141-$F('txtmsg[memo]').length); 新的Form.Element.Observer('txtmsg[memo]',0.1,函数(元素,值){ $('memo-counter').innerHTML=(141-$F('txtmsg[memo]').length);)
首先,您需要为
元素添加一个结束标记,因为它不能自动结束,
cols
属性是必需的

使用下面的代码,我可以部分地让它在IE上工作。当你输入字符时,它会减少计数器,但由于某些原因,当使用IE6时,删除键、退格键和光标键不起作用!使用Firefox3.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>

你有。。。剩下的字符

新的Form.Element.Observer(“txtmsg[memo]”,0.1,函数(元素,值){ $(“备忘录计数器”).update(141-value.length); });
是的,当我格式化问题时,我突然删除了结束标记。将其添加回,并添加列和列。仍然不起作用。这是由我的框架生成的javascript引起的错误。无论如何,谢谢你。