Recorte de IE8 y JQuery ()


103

Estoy haciendo uso de trim () así:

if($('#group_field').val().trim()!=''){

Donde group_fieldes un elemento de entrada de tipo texto. Esto funciona en Firefox pero cuando lo intento en IE8 me da este error:

Message: Object doesn't support this property or method

Cuando elimino el recorte (), funciona bien en IE8. Pensé que la forma en que estoy usando trim () es correcta.

Gracias a todos por cualquier ayuda

Respuestas:


199

Prueba esto en su lugar:

if($.trim($('#group_field').val()) != ''){

Más información:


1
Gracias, pensé que las funciones de JQuery se podían encadenar y así es como funcionaban.
— Abs

38
@Abs: val()no devuelve un objeto jQuery, por lo que el encadenamiento está fuera de la opción. Estabas llamando al trim()método en una cadena, pero IE no lo conoce String.trim.
— janmoesen

FWIW, acabo de fallar la revisión de código de alguien porque usaron la sintaxis del OP. Obviamente, no probaron en ninguna versión de MSIE.
— Adrian J. Moreno

3
En una nota al margen, si está probando MSIE8, no conoce Array.indexOf (). Utilice jQuery.inArray () en su lugar.
— Stone


10

Otra opción será definir el método directamente Stringen caso de que falte:

if(typeof String.prototype.trim !== 'function') {
  String.prototype.trim = function() {
    //Your implementation here. Might be worth looking at perf comparison at
    //http://blog.stevenlevithan.com/archives/faster-trim-javascript
    //
    //The most common one is perhaps this:
    return this.replace(/^\s+|\s+$/g, ''); 
  }
}

Entonces trimfuncionará independientemente del navegador:

var result = "   trim me  ".trim();

10

Hasta donde yo sé, Javascript String no tiene el método trim. Si desea utilizar la función de recorte, utilice

<script>
    $.trim(string);
</script>

3

Para recortar globalmente la entrada con texto de tipo usando jQuery:

/**
 * Trim the site input[type=text] fields globally by removing any whitespace from the
 * beginning and end of a string on input .blur()
 */
$('input[type=text]').blur(function(){
    $(this).val($.trim($(this).val()));
});
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.