2010-03-02 75 views
5

在我的ruby on rails應用程序中,我試圖使用Prototype Form.Element.Observer來運行消息中的字符計數。這適用於Firefox/Safari/Chrome,但不適用於IE。在IE上,觀察者根本不會開火。有沒有修復或不同的方式來做到這一點?觀察員不能在IE中工作

我的紅寶石標籤如下所示:

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

回答

1

首先你需要爲您的<textarea>元素添加結束標記,因爲它不能自動關閉,並且t他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> 
+0

是的,我格式化我的問題時,我巧妙地刪除了結束標記。添加它,並添加了列和行。仍然不起作用。 – oillio 2010-03-17 04:05:38

+0

原來是由我的框架生成的JavaScript引起的錯誤。不管怎麼說,還是要謝謝你。 – oillio 2010-03-22 04:37:15