2013-11-01 3 views
1

Я пытался следующее:Javascript проходит событие закрытия

f.addEventListener('submit',(function(frm){ 
var func = (function(e){somefunction(e,frm);})(e); 
})(f),false); 

Но это не удается. Я хочу передать форму (f) как статическую ссылку и объект динамического события в названную функцию «somefunction».

Что у меня выше, не работает, что такое правильный синтаксис для прохождения обоих?

ответ

4

Проблема в том, что каждый из function s сразу вызывается, а undefined фактически передается addEventListener().

Вы хотите вместо return один из function с без его вызывающей скобки поэтому событие можно назвать позже:

f.addEventListener('submit', (function (frm) { 
    return function (e) { 
     someFunction(e, frm); 
    }; 
})(f), false); 

Хотя, с привязками событий, вам не обязательно нужны закрытие, как <form> будет контекст (this) из function прошло:

f.addEventListener('submit', someFunction, false); 

function someFunction(e) { 
    var frm = this; 
    // ... 
} 
1

не уверен, что именно вы пытаетесь сделать, но, похоже, вы пытаетесь вручную передать форму через обработчик событий. Вместо того, чтобы сохранить ссылку и просто ссылаться на него в обработчик таких как

f.addEventListener('submit',function(){ 
    var func = function(e){ 
     somefunction(e,f); 
    }; 
},false); 

вы не должны самости, выполняющую функцию если я не хватаю свое намерение здесь

+0

лол да это было больше увидеть фи Итло произведение тип предмет. есть определенно более чистые пути вокруг него. –

+0

gotcha;) весело с функциями –

Смежные вопросы