我正在尝试从使用内联事件触发器迁移到使用 Prototype 的 Event.observe 函数的事件监听器。有一些内联命令我不知道如何使用函数调用来处理。
我想从:
<form id='formFoo' action='whatever.php' onsubmit="return Foo.verify(this);">
至事件调用:
Event.observe('formFoo', 'submit', Foo.verify);
这当然行不通,因为我需要调用函数的返回值来确定表单是否提交。
如何使用事件处理程序执行此操作?
最佳答案
最简单的方法可能是 Event.Stop
从原型(prototype)。这对我有用(将其放在任何脚本 block 中):
Foo = { verify: function(){ return false } };
Event.observe(window, 'load', function() {
Event.observe('formFoo', 'submit', function(e){
if(! Foo.verify($('formFoo'))){
e.stop();
}
});
});
它会停止每次表单提交;您只需更改 Foo.verify 即可执行您想要的操作。
说明:当提交事件被触发时,prototype 会向处理程序传递一个表示该事件的原型(prototype) Event
对象,以及 stop
方法该对象阻止提交。剩下的就是设置事件。
小注意事项:除此之外,直接将 Foo.verify 作为处理程序传递将导致 verify 作为函数而不是方法调用(this 将是调用中的全局对象,而不是 Foo)。这种情况可能没问题 - 如果verify不使用this,那就没问题。但请注意其中的差异。
关于使用原型(prototype)的 Event.observe 返回函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2331792/