0

对于内联事件侦听器,我指的是用于事件注册的 HTML 元素属性,例如 onsubmit/onreset 属性,而不是用于注册事件的 dom 节点属性。

我之所以问,是因为当我注册一个事件处理程序时,该处理程序向表单的 onsubmit/onreset 属性返回 false,通过提交/重置执行提交/重置过程。

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>New Web Project</title>

        <script type="text/javascript">
            function f()
            {
               return false;
            }

        </script>

    </head>
    <body>
        <form action="" id = "form" onsubmit = "f()" onreset = "f()">
             <input type="text">
             <input type = "submit" value = "submit">
             <input type = "reset" value = "reset">
        </form>
    </body>
</html>
4

1 回答 1

2

当您通过 HTML 属性提供事件处理程序时,您提供的字符串会创建一个函数,该函数在事件发生时由浏览器调用。

因此,在您的示例中, onsubmit 和 onreset 属性创建了两个等效于:

function() {
  f();
}

因为该匿名函数不返回 false,所以不会阻止提交和重置事件。如果这是您想要做的,您可以执行以下操作之一。

要始终阻止默认处理:

onsubmit="f(); return false;" onreset="f(); return false;"

有条件地阻止默认处理(以及更好的代码风格,IMO):

onsubmit="return f();" onreset="return f();"
于 2012-07-10T12:45:21.683 回答