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

Antworten:


199

Versuchen Sie stattdessen Folgendes:

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

Mehr Info:


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


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();

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>

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()));
});
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.