関数を作成してすぐに呼び出すため、変数 validateAltName には実際には何も割り当てられません。これは関数の戻り値であるため、未定義のままです。
var validateAltName = (function (info) {
var altName = $.trim(altInput.value);
console.log(altName); //only one time i am getting, not on keyup..
if (!altName) {
altInput.select();
return; // return 'undefined', which gets assigned to validateAltName
}
// if you fall off the end, it also returns 'undefined'
}()); // this _calls_ the function
周囲の括弧と末尾の () を削除します
var validateAltName = function (info) { // no opening paren
var altName = $.trim(altInput.value);
console.log(altName); //only one time i am getting, not on keyup..
if (!altName) {
altInput.select();
return;
}
}; // no () parens or closing )
編集:イベントが発生したときにこの関数にパラメーターを送信する場合は、それを呼び出すハンドラーに匿名関数を含めることができます。
// instead of
$(altInput).on("keyup", validateAltName); //is there a way to send parameter?
// you can use
$(altInput).on("keyup", function(e) {
// by using .call() instead of direct invocation () you can preserve 'this'
validateAltName.call(this, parm1, parm2);
}); //is there a way to send parameter?