クロージャーを使用して、フォーム内のすべての入力にonKeyUpイベントを割り当てようとしています。配列fields
には、イベントの割り当てが必要なフィールドのすべての名前が含まれています。配列には、 ajax検証を必要とするajaxFields
(配列からの)フィールドの名前が含まれています。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]));
}
}
ユーザーがそのフィールドへの入力を終了してから1秒後にonKeyUp関数を実行し、キーがアップするたびに(onKeyUp)実行するようにしたいと思います。これにより、ajax呼び出しは言うまでもなく、多くの処理スペースを節約できます。これまでのところ、これを使用しています:
clearTimeout(timer);
timer = setTimeout('validate()' ,1000);
関数が存在しないことに気付いたかもしれvalidate()
ませんが、それは、名前付き関数内でクロージャをラップする方法がわからないためです。
では、どうすればよいですか?
編集:ここに現在のフィドルがあります