2010-03-02 16 views
5

Nell'app ruby ​​on rails sto tentando di utilizzare un Prototype Form.Element.Observer per eseguire un conteggio dei caratteri in un messaggio. Funziona bene su Firefox/Safari/Chrome, ma non su IE. Su IE l'osservatore semplicemente non spara. C'è una soluzione o un modo diverso per farlo?non funziona in IE

mio tag rubino si presenta così:

<%= countdown_field('txtmsg[memo]','memo-counter', 141, :frequency => 0.10) %> 

La funzione countdown_field assomiglia a questo:

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 

Il codice HTML risultante è simile al seguente:

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

risposta

1

Prima di tutto è è necessario aggiungere un tag di chiusura per l'elemento <textarea> perché non può essere chiuso automaticamente e t Gli attributi cols e rows sono obbligatori.

Utilizzando il codice qui sotto posso parzialmente farlo funzionare per IE. Decrementa il contatore mentre si digitano i caratteri, ma per qualche motivo i tasti Canc, Backspace e cursore non funzionano quando si utilizza IE6! Funziona perfettamente con 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

Sì, ho rimosso il tag di chiusura quando stavo formattando la mia domanda. Aggiunti di nuovo e aggiunti i cols e le righe. Ancora non funziona. – oillio

+0

Si è verificato un errore causato da javascript generato dal mio framework. Grazie comunque. – oillio