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 开发者_如何学Govalue 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?
});
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.
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);
});
$(this).val($(this).val().trim());
alert($(this).val());
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());
});
精彩评论