2010-03-02 23 views
5

En mi aplicación ruby ​​on rails estoy tratando de usar un Prototype Form.Element.Observer para ejecutar un conteo de los caracteres en un mensaje. Esto funciona bien en Firefox/Safari/Chrome, pero no en IE. En IE, el observador simplemente no dispara. ¿Hay una solución o una forma diferente de hacer esto?observador no funciona en IE

Mi etiqueta de rubí es el siguiente:

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

La función countdown_field se ve así:

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 

El código HTML resultante es el siguiente:

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

Respuesta

1

En primer lugar usted necesita agregar una etiqueta de cierre para su elemento <textarea> porque no puede ser de cierre automático, y t Los atributos cols y rows son obligatorios.

Usando el siguiente código puedo hacerlo funcionar parcialmente para IE. Disminuye el contador a medida que escribe caracteres, pero por alguna razón las teclas Eliminar, Retroceso y cursor no funcionan cuando se usa IE6. Funciona bien usando 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í, accidentalmente eliminé la etiqueta de cierre cuando estaba formateando mi pregunta. Se volvió a agregar y se agregaron cols y filas. Aún no funciona. – oillio

+0

Resultó ser un error causado por javascript generado por mi framework. Gracias de cualquier manera. – oillio