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

Abdominales
fuente

Respuestas:

199

Prueba esto en su lugar:

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

Más información:

Sarfraz
fuente
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
14

Deberías usar $.trim, así:

if($.trim($('#group_field').val()) !='') {
    // ...
}
Alex Gyoshev
fuente
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();
andreister
fuente
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>
Bang Dao
fuente
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()));
});
Roca
fuente