Scott B
Scott B

Reputation: 40207

jQuery to trim() a text input field's value attribute?

In this jQuery, I'm able to bind the paste event to validate the form field, but my method inside the function is apparently wrong. I'm not getting an alert at all.

I just want to trim the text that's input and return that as the value of the form input text field #adsense_client_id.

$("#adsense_client_id").bind('paste', function(e) {
    $(this).attr('value') = $.trim(this).val();
    alert($(this).val()); //why no alert?
});

Upvotes: 8

Views: 50911

Answers (4)

Espiral
Espiral

Reputation: 31

$(this).val($(this).val().trim());
alert($(this).val());

Upvotes: 3

jcarrenog
jcarrenog

Reputation: 199

I know this is a very old question but this is pretty obvious...

The only poblem with your code is with this line:

$(this).attr('value') = $.trim(this).val();

Which is incorrect in JavaScript. I think you meant this:

$(this).attr('value', $.trim(this).val());

And the resulting code works perfectly:

$("#adsense_client_id").bind('paste', function(e) {
    $(this).attr('value', $.trim(this).val());
    alert($(this).val()); 
});

Upvotes: 1

MacMac
MacMac

Reputation: 35341

The $.trim is a function which needs a variable/string inside it, since you did not wrap $(this).val() with $.trim in order for it to work.

As you need a timeout for the paste to be caught, do it like this:

$("#adsense_client_id").bind('paste', function(e) {
    var clientId = $(this);
    setTimeout(function(){
        clientId.val($.trim(clientId.val()));
        alert(clientId.val());
    });
});

Demo.

Upvotes: 17

Christian Smorra
Christian Smorra

Reputation: 1754

check out this response Catch paste input

apparently you need to set a small settimeout to catch the pasted input value

this should do the trick:

("#adsense_client_id").bind('paste', function(e) {
    $(this).attr('value') = $.trim($(this).val());
    var el = $(this);
    setTimeout(function()
    {
        var text = $(el).val();
        alert($.trim(text)); //why no alert?
    }, 500);
});

Upvotes: 4

Related Questions