用于停止表单提交的 JavaScript 代码

IT技术 javascript html forms
2021-01-08 22:34:08

停止表单提交的一种方法是从 JavaScript 函数返回 false。

单击提交按钮时,将调用验证函数。我有一个表单验证案例。如果满足该条件,我将调用一个名为returnToPreviousPage();的函数

function returnToPreviousPage() {
    window.history.back();
}

我正在使用 JavaScript 和Dojo Toolkit

与其返回上一页,不如提交表单。如何中止本次提交并返回上一页?

6个回答

可以使用函数的返回值来阻止表单提交

<form name="myForm" onsubmit="return validateMyForm();"> 

和功能像

<script type="text/javascript">
function validateMyForm()
{
  if(check if your conditions are not satisfying)
  { 
    alert("validation failed false");
    returnToPreviousPage();
    return false;
  }

  alert("validations passed");
  return true;
}
</script>

在 Chrome 27.0.1453.116 m 的情况下,如果上述代码不起作用,请将事件处理程序的参数的 returnValue字段设置为 false 以使其工作。

感谢山姆分享信息。

编辑 :

感谢 Vikram 解决了如果 validateMyForm() 返回 false 的方法:

 <form onsubmit="event.preventDefault(); validateMyForm();">

其中 validateMyForm() 是一个函数,如果验证失败则返回 false。关键点是使用名称事件。我们不能用于 egepeventDefault()

我认为既然这是公认的答案,它可能应该告诉如何正确地做到这一点。我和 JackDev 一起想知道如何让它正常工作。由于是,这并没有工作
2021-03-18 22:34:08
只是猜测:它在最新版本的 Chrome 中对我不起作用。
2021-03-19 22:34:08
嗨 Sam / Hemant,您能否提供有关如何将事件处理程序的参数的 returnValue 字段设置为 false 的代码示例。
2021-03-19 22:34:08
如果validateMyForm()有错误return false将不会到达。所以这可能会失败。几个小时后,我找到了一个有效的解决方案并将其发布在下面。
2021-03-25 22:34:08
任何返回的东西false似乎都没有任何效果;Chrome 仍会提交表单。例如,onsubmit="return false;"但是,将事件处理程序的参数returnValue字段设置false为对我有用。
2021-03-26 22:34:08

使用防止默认

道场工具包

dojo.connect(form, "onsubmit", function(evt) {
    evt.preventDefault();
    window.history.back();
});

jQuery

$('#form').submit(function (evt) {
    evt.preventDefault();
    window.history.back();
});

原生 JavaScript

if (element.addEventListener) {
    element.addEventListener("submit", function(evt) {
        evt.preventDefault();
        window.history.back();
    }, true);
}
else {
    element.attachEvent('onsubmit', function(evt){
        evt.preventDefault();
        window.history.back();
    });
}
@Sahand @codeat30 您可以访问该事件target
2021-03-20 22:34:08
出于很多原因,我会推荐 event.preventDefault() 而不是 return false,这应该是最佳答案:blog.nmsdvid.com/...
2021-03-25 22:34:08
好答案。比选择的好。
2021-04-01 22:34:08
@acidjazz 但是如何在防止默认后访问表单数据?
2021-04-03 22:34:08
很好,但是您将在哪里执行 OP 想要的验证?
2021-04-06 22:34:08

以下工作截至目前(在 Chrome 和 Firefox 中测试):

<form onsubmit="event.preventDefault(); validateMyForm();">

其中 validateMyForm() 是一个函数,false如果验证失败则返回关键点是使用名称event我们不能使用 for eg e.preventDefault()

只需使用简单的button而不是提交按钮。并调用一个 JavaScript 函数来处理表单提交:

<input type="button" name="submit" value="submit" onclick="submit_form();"/>

script标签内的功能

function submit_form() {
    if (conditions) {
        document.forms['myform'].submit();
    }
    else {
        returnToPreviousPage();
    }
}

你也可以试试 window.history.forward(-1);

我喜欢这种方法,因为它允许我的用例回调。
2021-03-09 22:34:08
这可以防止使用回车键提交表单。此外,新的 HTML5 属性(例如)required将不起作用。
2021-03-29 22:34:08

基于@Vikram Pudi 的回答,我们也可以使用纯 Javascript 来做到这一点

<form onsubmit="submitForm(event)">
    <input type="text">
    <input type="submit">
</form>

<script type="text/javascript">

    function submitForm(event){
        event.preventDefault();


    }
</script>