2011-10-10 28 views
52

¿Qué pasa con el método de recorte jQuery?jQuery Object no admite la propiedad o el método trim() en IE

jQuery('#Reminders').attr('value').trim() 

objeto no admite la propiedad o método de 'recortar'

jQuery('#Reminders').attr('value') 

"5,1,1"

$('#Reminders').attr('value').split(',') 

[5,1,1] 
[0]: "5" 
[1]: "1" 
[2]: "1" 

que no tienen estos males en Firefox o Chrome ... solo IE 9.0. ¿Hay algo especial sobre trim() ... No recibí la nota.

Respuesta

91

IE no tiene un método string.trim().

En su lugar, puede llamar a jQuery's $.trim(str).

0

Esto no tiene nada que ver con jquery. Attr está devolviendo una cadena. Lo que significa es que IE no tiene un método de recorte en la cadena.

10

Puede método trim() añadir el objeto String, para los navegadores sin soporte para este método (es decir, igual).

sólo tiene que añadir estas líneas antes de llamar método trim():

String.prototype.trim = function() { 
    return this.replace(/^\s+|\s+$/g, ''); 
} 
+1

Para que no sobrescriba el método 'trim' si ya existe, puede hacerlo:' String.prototype.trim = String.prototype.trim || function() { return this.replace (/^\ s + | \ s + $/g, ''); } ' –

4

mismo problema aquí con IE no tener el método trim(). Lo solucioné agregando el trim() si no existe.

(function(str) { 
    if (typeof(str.prototype.trim) === 'undefined') { 
     str.prototype.trim = function() { 
      return $.trim(this); 
     }; 
    } 
})(String); 

Funciona muy bien.

Cuestiones relacionadas