【问题标题】:How to prevent that a JQuery button submit my form?如何防止 JQuery 按钮提交我的表单?
【发布时间】:2014-12-17 09:02:05
【问题描述】:

我是 JQuery 开发的新手,遇到以下问题。

我有一个包含这个 JQuery 按钮的表单:

<!-- RESET BUTTON: -->
<td>
    <button class="resetButton" name="submitReset" onclick="return resetSearch(); return false;">Reset</button>
</td>

单击此按钮,用户将在我的表单中执行此 JavaScript 功能重置为 null 2 输入:

function resetSearch() {
    var f = document.getElementById('dataDaAForm');
    f.dataDa.value = null;
    f.dataA.value = null;
    event.preventDefault();
}

脚本已执行,但问题是它从上一个函数中退出,无论如何都会提交表单,我不希望这种行为发生。

当用户点击重置按钮时,如何防止表单被提交?如您所见,我也尝试添加此语句,但它不起作用:

event.preventDefault();

我错过了什么?我该如何解决这个问题?

另一个问题是:重置表单输入标签的值是否正确?

Tnx

【问题讨论】:

  • 这是普通的老香草 javascript...没有 jQuery 可以看到...
  • 有一个javascript函数可以重置表单:f.reset()

标签: javascript jquery html forms javascript-events


【解决方案1】:

试一试——您需要将事件传递给函数。此外,我已经消除了对内联 JS 的需求。

$(".resetButton").click(function(e) {
    var f = document.getElementById('dataDaAForm');
    f.dataDa.value = null;
    f.dataA.value = null;
    e.preventDefault();
});

除了防止默认,Javascript 还提供了一种重置表单的方法:

$(".resetButton").click(function(e) {
    document.getElementById("dataDaAForm").reset();
    e.preventDefault();
});

注意:你标记了 jquery,所以我提供了一个 jquery 解决方案(尽管你的问题中没有 jquery)。

【讨论】:

  • 如果您将答案添加到他的另一个问题:“重置我的表单输入标签的值是否正确?”那么这是最好的答案
【解决方案2】:

创建重置按钮的最简单方法是输入类型重置:

<input type="reset" value="Reset" />

虽然如果你真的想用 javascript 来做,James Hill 的回答就足够了

【讨论】:

    【解决方案3】:

    试试这个

    var form = $('#dataDaAForm')
    
    $(".resetButton").on("click",function(e) {
        form.reset()
        e.preventDefault()
        e.stopPropagation()
    })
    

    【讨论】:

    • 这可行,但它不应该是(最佳)答案。例如,当重置按钮的父级不是表单时,它将不起作用
    • 现在无论按钮的位置如何,它都可以工作,另外预先缓存表单元素使其更高效,而不是每次点击都进行查询
    猜你喜欢
    • 2022-01-22
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 2020-06-06
    相关资源
    最近更新 更多