在我的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>
首先,您需要为您的 <textarea> 元素,因为它不能自动关闭,并且 cols 和 rows 属性是必需的。
<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>