Самый простой способ сделать это, вероятно, Event.Stop
из прототипа. Это работает для меня (поместите это в любой блок скрипта):
Foo = { verify: function(){ return false } };
Event.observe(window, 'load', function() {
Event.observe('formFoo', 'submit', function(e){
if(! Foo.verify($('formFoo'))){
e.stop();
}
});
});
Останавливает каждую отправку формы; вам просто нужно изменить Foo.verify, чтобы делать то, что вы хотели.
Объяснение: Когда инициируется событие submit, prototype передает обработчику прототип Event
объекта, представляющего событие, а метод stop
для этого объекта предотвращает отправку. Остальное просто настраивает событие.
Небольшое примечание: Помимо прочего, передача Foo.verify непосредственно в качестве обработчика приведет к вызову verify как функции, а не метода ( this будет глобальным объектом в вызове, а не Foo). Эта ситуация может быть в порядке - если проверить не использует это , все в порядке. Однако помните о разнице.