IE8 und JQuerys trim ()

103

Ich benutze trim () wie folgt:

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

Wo group_fieldist ein Eingabeelement vom Typ Text. Dies funktioniert in Firefox, aber wenn ich es auf IE8 versuche, gibt es mir diesen Fehler:

Message: Object doesn't support this property or method

Wenn ich die trim () entferne, funktioniert es gut auf IE8. Ich dachte, die Art und Weise, wie ich trim () benutze, ist richtig?

Vielen Dank für jede Hilfe

Abs
quelle

Antworten:

199

Versuchen Sie stattdessen Folgendes:

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

Mehr Info:

Sarfraz
quelle
1
Danke, ich dachte, die Funktionen von JQuery sind verkettbar und so haben sie alle funktioniert!
Abs
38
@Abs: Gibt val()kein jQuery-Objekt zurück, daher ist eine Verkettung nicht möglich. Sie haben die trim()Methode für eine Zeichenfolge aufgerufen, aber der IE weiß nichts darüber String.trim.
Janmoesen
FWIW, ich habe gerade die Codeüberprüfung einer Person nicht bestanden, weil sie die Syntax des OP verwendet hat. Sie haben offensichtlich in keiner Version von MSIE getestet.
Adrian J. Moreno
3
Nebenbei bemerkt, wenn Sie MSIE8 testen, weiß es nichts über Array.indexOf (). Verwenden Sie stattdessen jQuery.inArray ().
Stein
14

Sie sollten $.trimwie folgt verwenden:

if($.trim($('#group_field').val()) !='') {
    // ...
}
Alex Gyoshev
quelle
10

Eine andere Möglichkeit besteht darin, die Methode direkt zu definieren, Stringfalls sie fehlt:

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

Dann trimfunktioniert es unabhängig vom Browser:

var result = "   trim me  ".trim();
andreister
quelle
10

Soweit ich weiß, verfügt Javascript String nicht über die Methode trim. Wenn Sie die Funktionstrimmung verwenden möchten, verwenden Sie

<script>
    $.trim(string);
</script>
Bang Dao
quelle
3

So schneiden Sie Eingaben mit Typtext mithilfe von jQuery global ab:

/**
 * 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()));
});
Stein
quelle