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());
});
精彩评论