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

标签 return prototypejs dom-events

我正在尝试从使用内联事件触发器迁移到使用 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/

相关文章:

java - 在其他方法中使用列表(数组列表)(java)

Jquery 验证和 Prototypes.js 冲突问题?

javascript - 如何测试是否支持onpropertychange?

javascript - 从 React 中 cotentEditable 的 onInput 事件获取值

json - 使用Spring的mockMvc,如何检查返回的数据是否包含字符串的一部分?

java - 是否可以通过此方法返回或以某种方式访问​​ "courses"中的数据?

javascript - 脚本效果发生一次

javascript - 使用 Prototype 将窗口滚动到沿 y 轴居中?

javascript - 从 html select 执行 Javascript 函数

c - 这是什么意思?返回函数()