Problem:
The blur
and keyup
events each fire once onload, and only onload. How can I get them to work correctly?
jQuery:
function myFunction(text){
alert(text);
}
$('#input1').on({
keyup: myFunction('keyup'),
blur: myFunction('blur'),
focus: function(){console.log('focus!');}
});
Fiddle: https://jsfiddle.net/GrMQX/
You are not assigning a function to keyup
and blur
, you're assigning the result of the execution of myFunction
.
Change it like this:
$('#input1').on({
keyup: function() { myFunction('keyup'); },
blur: function() { myFunction('blur'); },
focus: function() { console.log('focus!'); }
});
DEMO
You're not declaring the functions as callbacks, you're executing them and their return result is assigned as a callback (which doens't work).
Try this:
$('#input1').on({
keyup: function() { myFunction('keyup') },
blur: function() { myFunction('blur') },
focus: function(){console.log('focus!');}
});
You need to pass a function as an argument.. you are passing the return value of the called function
function myFunction(text){
alert(text);
}
$('#input1').on({
keyup: function(){myFunction('keyup');},
blur: function(){myFunction('blur');},
focus: function(){console.log('focus!');}
});
Or you can convert your myFunction
to a function generator
function myFunction(text){
return function(){
console.log(text);
}
}
$('#input1').on({
keyup: myFunction('keyup'),
blur: myFunction('blur'),
focus: function(){console.log('focus!');}
});
Demo at https://jsfiddle.net/gaby/GrMQX/6/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With