IE8 e trim di JQuery ()


103

Sto facendo uso di trim () in questo modo:

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

Dove group_fieldè un elemento di input di tipo testo. Funziona in Firefox ma quando lo provo su IE8 mi dà questo errore:

Message: Object doesn't support this property or method

Quando rimuovo il trim (), funziona bene su IE8. Ho pensato che il modo in cui sto usando trim () sia corretto?

Grazie a tutti per qualsiasi aiuto

Risposte:


199

Prova questo invece:

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

Ulteriori informazioni:


1
Grazie, pensavo che le funzioni di JQuery fossero concatenabili ed è così che funzionavano tutte!
Abs

38
@Abs: val()non restituisce un oggetto jQuery, quindi il concatenamento non è possibile. Stavi chiamando il trim()metodo su una stringa, ma IE non lo sa String.trim.
janmoesen

FWIW, ho appena fallito la revisione del codice di qualcuno perché hanno usato la sintassi dell'OP. Ovviamente non hanno testato in nessuna versione di MSIE.
Adrian J. Moreno

3
In una nota a margine, se stai testando MSIE8, non conosce Array.indexOf (). Utilizza invece jQuery.inArray ().
Stone il


10

Un'altra opzione sarà definire il metodo direttamente Stringnel caso in cui manchi:

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, ''); 
  }
}

Quindi trimfunzionerà indipendentemente dal browser:

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

10

Per quanto ne so, Javascript String non ha il metodo trim. Se vuoi usare la funzione trim, allora usa

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

3

Per tagliare globalmente l'input con testo di tipo utilizzando 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()));
});
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.