2010-06-10 5 views
1

Я хотел бы добавить прослушиватель событий/обработчик, который должен быть добавлен перед существующим обработчиком событий в Prototype. Вот пример:Как добавить обработчик событий JS в Prototype?

<form ... onsubmit="alert('foo')" id="f1"> 
    $('f1').observe("submit", function() { 
    alert('do this before foo'); 
    }); 
</form> 
+1

Я хотел бы предложить не полагаться на порядок привязки ... возможно, есть еще один способ сделать то, что вы хотите. Сделайте onsubmit функцией, которая запускает другое пользовательское событие, прежде чем делать то, что он делает .... –

+0

Отличная точка зрения, я думаю, что я, возможно, только что нашел решение. Фон моего вопроса - Rails remote_form(), который добавляет вызов onsubmit Ajax. Теперь я мог бы просто добавить вызов create в этом запросе Ajax для добавления другого обработчика события. Благодаря! – chinshr

ответ

0
Observer = Class.create({ 
initialize: function() { 
    this.callbacks = []; 
}, 
prependCallback = function(callback) { 
    this.callbacks.unshift(callback); 
}, 
appendCallback = function(callback) { 
    this.callbacks.push(callback); 
}, 
runCallbacks = function() { 
    this.callbacks.each(
    function(callback) { 
    callback(); 
    } 
); 
} 
}); 

bunchOfCallbacks = new Observer(); 
bunchOfCallbacks.appendCallback(function(){alert('second');}); 
$('anything').observe('anyEvent', bunchOfCallbacks.runCallbacks); 
bunchOfCallbacks.prependCallback(function(){alert('first');}); 
Смежные вопросы