使用原型的Event.observe返回函数

时间:2010-02-25 05:12:33

标签: javascript-events prototypejs return

我正在尝试从使用内联事件触发器迁移到使用Prototype的Event.observe函数的事件侦听器。有一些内联命令我不知道如何使用函数调用来处理。

我想离开:

<form id='formFoo' action='whatever.php' onsubmit="return Foo.verify(this);">

致电活动:

Event.observe('formFoo', 'submit', Foo.verify);

这当然行不通,因为我需要从我调用的函数返回值来确定表单是否被提交。

如何使用事件处理程序执行此操作?

1 个答案:

答案 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)。这种情况可能没问题 - 如果验证不使用这个,那你就没事了。但要注意区别。