在我的表单中,在“keyup”上 - 我正在触发自定义事件。但它不起作用。我也需要从触发器接收值。
这是我的代码:
(function($){
$(document).on('nameEnter', showName);
input = $('#name');
input.on('keyup', function(){
var value = $(this).val();
$.event.trigger({
type:'nameEnter',
value:value,
time: new Date()
});
});
var showName = function(params){
console.log('params is', params); //nothing happening!
};
}(jQuery));
答案 0 :(得分:1)
您需要正确声明该功能才能正常工作:
(function($){
$(document).on('nameEnter', showName);
input = $('#name');
input.on('keyup', function(){
var value = $(this).val();
$.event.trigger({
type:'nameEnter',
value:value,
time: new Date()
});
});
}(jQuery));
function showName (params){
console.log('params is', params.value);
};
答案 1 :(得分:1)
在将showName传递给.on方法之前,必须先定义它:
var showName = function(params){
console.log('params is', params);
};
$(document).on('nameEnter', showName);
答案 2 :(得分:1)
主要问题在于您声明功能的方式
更改此
var showName = function(params){
console.log('params is', params); //nothing happening!
};
与
function showName (params){
console.log('params is', params.value);
};
这与函数范围有关,这里更多
Difference between assigning function to variable or not
主要区别在于第一个(函数声明)被提升到声明它的作用域的顶部,而第二个(函数表达式)不是。
这就是为什么你无法在手前访问函数表达式