【问题标题】:Where to add onsubmit to a form in Javascript在哪里添加 onsubmit 到 Javascript 中的表单
【发布时间】:2013-07-12 09:30:39
【问题描述】:

在我的 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() 函数设为全局并在&lt;form&gt; 标记中使用onsubmit="return validate();",则该表单只会按预期有条件地提交。

为什么添加上面的validate() 函数不起作用? false 返回值好像丢失了?

【问题讨论】:

    标签: javascript forms javascript-events


    【解决方案1】:

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

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

    function validate(ev) {
    

    那么你就可以阻止对它的默认操作了:

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

    【讨论】:

    • 嗯...我添加了ev.preventDefault();,它工作得很好。我还需要返回false吗?
    • 没有。您只需调用事件对象上的方法。
    • 谢谢昆汀。还有一个问题:为什么当我将return false 直接附加到&lt;form&gt; 时它会起作用,而当我通过addEventListener() 时却不是这样。传递/检查事件的不同方式?
    • 是的。旧的和有限的与新的和灵活的。
    猜你喜欢
    • 2019-07-14
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多