在Javascript中添加onsubmit到表单的位置

时间:2013-07-12 09:30:39

标签: javascript forms javascript-events

在我的HTML中,我有一个表单没有一个onsubmit事件监听器:

<form action="contact.php" method="post" id="contact">
    ...
    <input type="submit" value="Send" />
</form>

因此,只要我点击“发送”按钮,就会始终发布表单。但是,我想首先验证输入,所以我想附加一个事件监听器并拦截帖子。这是我将事件监听器附加到表单的方式:

window.onload = function() {
    function validate() {
        return window.confirm("Confirm");
    }
    var form = document.getElementById("contact");
    form.addEventListener("submit", validate);
}

当事件监听器正在执行时,如果我按照上面的方法进行操作,表单总是发布!但是,如果我将validate()函数设为全局并在onsubmit="return validate();"标记中使用<form>,则表单只会按预期有条件地提交。

为什么通过添加上述validate()功能无效?似乎false返回值丢失了吗?

1 个答案:

答案 0 :(得分:3)

现代事件处理具有更复杂的API,它提供了更大的灵活性,但代价是无法将行为与简单的布尔结果联系起来。

对于您的用例,您需要捕获事件对象:

function validate(ev) {

然后您可以阻止对其执行默认操作:

if (!confirm('Confirm')) {
    ev.preventDefault();
}