我正在尝试从使用内联事件触发器迁移到使用Prototype的Event.observe函数的事件侦听器。有一些内联命令我不知道如何使用函数调用来处理。
我想离开:
<form id='formFoo' action='whatever.php' onsubmit="return Foo.verify(this);">
致电活动:
Event.observe('formFoo', 'submit', Foo.verify);
这当然行不通,因为我需要从我调用的函数返回值来确定表单是否被提交。
如何使用事件处理程序执行此操作?
答案 0 :(得分:3)
最简单的方法可能是原型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 直接作为处理程序传递会导致验证被调用为函数,而不是方法( this 将是调用中的全局对象,而不是Foo)。这种情况可能没问题 - 如果验证不使用这个,那你就没事了。但要注意区别。