【发布时间】:2012-05-14 18:29:12
【问题描述】:
我正在尝试使用闭包将 onKeyUp 事件分配给表单中的所有输入。数组fields 包含需要分配事件的字段的所有名称。数组 ajaxFields 包含需要 ajax 验证的字段名称(来自数组 fields)。
function createEvents(fields,ajaxFields) {
for(var x=0;x<fields.length;x++) {
$('input[name='+fields[x]+']').keyup(function(field) {
//assign an onKeyUp event
return function() {
//some code using variable 'field' and array 'ajaxFields'
}(fields[x]));
}
}
我希望 onKeyUp 函数在用户完成输入该字段后的一秒钟内执行,每次按键启动时都会插入 (onKeyUp)。这将节省大量的处理空间,更不用说 ajax 调用了。到目前为止我正在使用这个:
clearTimeout(timer);
timer = setTimeout('validate()' ,1000);
您可能已经注意到函数 validate() 不存在,那是因为我不知道如何将闭包包装在命名函数中,我什至不确定我是否应该...
那我该怎么做呢?
编辑:这是当前的fiddle
【问题讨论】:
标签: javascript timeout closures