oil*_*lio 5 javascript ruby ruby-on-rails prototypejs
在我的ruby on rails应用程序中,我尝试使用Prototype Form.Element.Observer来运行消息中的字符计数.这适用于Firefox/Safari/Chrome,但不适用于IE.在IE上,观察者根本不会开火.有没有修复或不同的方式这样做?
我的ruby标签看起来像这样:
<%= countdown_field('txtmsg[memo]','memo-counter', 141, :frequency => 0.10) %>
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
生成的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>
Run Code Online (Sandbox Code Playgroud)
首先,您需要为<textarea>元素添加一个结束标记,因为它不能自闭合,并且cols和rows属性是强制性的。
使用下面的代码我可以部分让它在 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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
403 次 |
| 最近记录: |