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.