代码之家  ›  专栏  ›  技术社区  ›  mwieczorek

使用原型的事件返回函数。观察

  •  2
  • mwieczorek  · 技术社区  · 14 年前

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

    我想从:

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

    到事件调用:

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

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

    如何使用事件处理程序完成此操作?

    1 回复  |  直到 12 年前
        1
  •  3
  •   Jesse Millikan    14 年前

    最简单的方法可能是 Event.Stop 来自原型。这对我有效(将其放在任何脚本块中):

    Foo = { verify: function(){ return false } };
    
    Event.observe(window, 'load', function() {
        Event.observe('formFoo', 'submit', function(e){
            if(! Foo.verify($('formFoo'))){
                e.stop();
            }
        });
    });
    

    说明: 当触发提交事件时,原型将向处理程序传递原型 Event 表示事件的对象,以及 stop 该对象上的方法阻止提交。剩下的只是准备活动。

    小注: 除此之外,传球 脚验证 直接作为处理程序将导致作为函数而不是方法调用Verify( 将是调用中的全局对象,而不是foo)。这种情况可能没问题-如果 验证 不使用 你很好。不过,要注意区别。