2011-04-13 22 views
6
function charCount(){ 
    $.doTimeout('poll', 150, function(){ 
     messageVal = $('#messageLabel textarea').val(); 

     messageLength = messageVal.length; //IE BREAKS HERE 

     $('#messageLength').html(messageLength + '/140') 
     if(messageLength > 140){ 
      $('#messageLength').not('.inv').addClass('inv') 
     }else{ 
      $('#messageLength.inv').removeClass('inv') 
     } 
     return false; 
    }) 

} 
$('#messageLabel textarea').change(charCount).keyup(charCount); 

Da el siguiente error en Internet Explorer 7.0 (y tal vez en otras versiones también).IE Error, el objeto no admite esta propiedad o el método

El objeto no admite esta propiedad o método.

¿Alguna idea de qué está causando este error?

+1

"No, no es la solución. Gracias" - Intente comentar cosas hasta que el error no aparezca, y eso aislará la declaración que invoca esto. –

+0

@meder Tienes toda la razón. Aunque ya edité la pregunta. El problema está en la línea 5 (.length). – dubbelj

Respuesta

23

Cuando no usa la palabra clave var, el buscador IE busca messageLength en el contexto global y lo encuentra ... tiene un elemento con esa ID.

Error al intentar asignar el número al elemento HTML.

Para solucionar esto, simplemente declarar messageLength como variable local:

var messageLength = messageVal.length; //IE WON'T BREAK HERE 
0

Try yo reemplazar:

messageVal = $('#messageLabel textarea').val(); 

con

messageVal = $('#messageLabel textarea').text(); 

Espero que ayuda.

+0

No, no es la solución. Gracias. – dubbelj

+0

intente hacer un typeof (messageVal) – alexl

+0

extraño, debe funcionar, ¿está seguro de que el error viene de messageVal.length? – alexl

0

Creo que el .change() está teniendo algún problema en IE. Quítelo y vea si está funcionando.

También intente utilizar .html() en lugar de .val().

+0

No, no es la solución. Gracias. – dubbelj

0

mira aquí simple test. textarea no admite propiedad de valor. puede obtenerlo a través de la propiedad de texto

0

tuve un error similar, sin embargo, fue porque añadí la biblioteca jQuery a la página maestra y había una declaración biblioteca duplicado en otros lugares la misma página.

Cuestiones relacionadas