javascript - 拦截 JavaScript 中的表单提交并阻止正常提交

标签 javascript html forms

似乎有很多关于如何使用 javascript 提交表单的信息,但我正在寻找一种解决方案来捕获提交表单的时间并在 javascript 中拦截它。

HTML

<form>
 <input type="text" name="in" value="some data" />
 <button type="submit">Go</button>
</form>

当用户按下提交按钮时,我希望提交表单,而是希望调用 JavaScript 函数。

function captureForm() {
 // do some stuff with the values in the form
 // stop form from being submitted
}

一个快速的 hack 是向按钮添加一个 onclick 函数,但我不喜欢这个解决方案......有很多方法可以提交表单......例如在输入时按回车键,这不考虑在内。

最佳答案

<form id="my-form">
    <input type="text" name="in" value="some data" />
    <button type="submit">Go</button>
</form>

在 JS 中:

function processForm(e) {
    if (e.preventDefault) e.preventDefault();

    /* do what you want with the form */

    // You must return false to prevent the default form behavior
    return false;
}

var form = document.getElementById('my-form');
if (form.attachEvent) {
    form.attachEvent("submit", processForm);
} else {
    form.addEventListener("submit", processForm);
}

编辑:在我看来,这种方法比在表单上设置 onSubmit 属性要好,因为它保持了标记和功能的分离。但这只是我的两分钱。

Edit2:更新我的示例以包含 preventDefault()

关于javascript - 拦截 JavaScript 中的表单提交并阻止正常提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5384712/

相关文章:

javascript - 从 D3 线插值器函数中获取值

javascript - Web 应用程序和 native Android 应用程序之间的通信

html - 如何在 1 个父 div 内并排放置 3 个 div,并且宽度占页面的 75%?

javascript - $(this).serialize() 在 jQuery 中不起作用 验证submitHandler

html - 通过 URL 传递表单变量

javascript - Facebook 点赞按钮帖子不显示

javascript - 每个 v-for 循环有多个 <td> 元素

Javascript 函数,尝试创建链接并设置其对齐方式

android - Android 上 html 页面中的链接不起作用

css - 我可以在不使用 &lt;input&gt; 元素的情况下提交表单吗?或者 &lt;input&gt; 元素可以包含两个 <p> 元素吗?