簡體   English   中英

觀察者在IE中不起作用

[英]observer does not work in IE

在我的ruby on rails應用程序中,我嘗試使用Prototype 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>

首先,您需要為<textarea>元素添加結束標記,因為它不能自動關閉,並且colsrows屬性是必需的。

使用下面的代碼我可以部分地使它適用於IE。 它在您鍵入字符時遞減計數器,但由於某種原因,使用IE6時,Delete,Backspace和光標鍵不起作用! 它使用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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM