Pablo
Pablo

Reputation: 2386

jQuery Object doesn't support property or method trim() in IE

What's up with the jQuery trim method??

jQuery('#Reminders').attr('value').trim()

Object doesn't support property or method 'trim'

jQuery('#Reminders').attr('value')

"5,1,1"

$('#Reminders').attr('value').split(',')

[5,1,1]
[0]: "5"
[1]: "1"
[2]: "1"

I don't have these woes in FireFox or Chrome ... only IE 9.0. Is there something special about trim() ... I didn't get the memo .

Upvotes: 52

Views: 28397

Answers (5)

Mauro Ciancio
Mauro Ciancio

Reputation: 436

Same problem here with IE not having the trim() method. I solved by adding the trim() if it doesn't exist.

(function(str) {
    if (typeof(str.prototype.trim) === 'undefined') {
        str.prototype.trim = function() {
            return $.trim(this);
        };
    }
})(String);

Works great.

Upvotes: 4

Leonardo Montenegro
Leonardo Montenegro

Reputation: 331

You can add trim() method on String object, for browsers without support for this method (IE alike).

Simply add these lines before you call trim() method:

String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, '');
}

Upvotes: 10

artlung
artlung

Reputation: 33833

trim() is not invoked like that in a jQuery context.

Once you call attr(), that's the end of jQuery chaining. See http://api.jquery.com/attr/

To do this, do:

jQuery.trim(jQuery('#Reminders').attr('value'));

See: http://api.jquery.com/jQuery.trim/

Upvotes: 6

aquinas
aquinas

Reputation: 23796

This doesn't have anything to do with jquery. Attr is returning a string. What it means is that IE doesn't have a trim method on string.

Upvotes: 0

SLaks
SLaks

Reputation: 888185

IE doesn't have a string.trim() method.

Instead, you can call jQuery's $.trim(str).

Upvotes: 92

Related Questions