停止表单提交的一种方法是从JavaScript函数返回false。
当单击提交按钮时,将调用验证函数。我有一个表单验证的案例。如果满足这个条件,我调用一个名为returnToPreviousPage()的函数;
function returnToPreviousPage() {
window.history.back();
}
我正在使用JavaScript和Dojo工具包。
它不是返回到前一页,而是提交表单。我如何终止这次提交并返回到上一页?
停止表单提交的一种方法是从JavaScript函数返回false。
当单击提交按钮时,将调用验证函数。我有一个表单验证的案例。如果满足这个条件,我调用一个名为returnToPreviousPage()的函数;
function returnToPreviousPage() {
window.history.back();
}
我正在使用JavaScript和Dojo工具包。
它不是返回到前一页,而是提交表单。我如何终止这次提交并返回到上一页?
当前回答
基于@Vikram Pudi的回答,我们也可以用纯Javascript做到这一点
<form onsubmit="submitForm(event)">
<input type="text">
<input type="submit">
</form>
<script type="text/javascript">
function submitForm(event){
event.preventDefault();
}
</script>
其他回答
尽管这看起来很明显,但应该注意的是,如果验证良好,如果你用防止默认阻止提交,你还必须提交你的表单。下面我提供了一个完整的示例,验证文档类型,然后提交如果它是正确的文档类型。
<h2>Document Upload</h2>
<script>
var CanContinue = false;
function validateMyForm()
{
if(CanContinue == false)
{
alert("You must upload a PDF, PNG, or JPG of your document.");
return false;
}
document.getElementById("myForm").submit();
return true;
}
function getFileNameWithExt(event) {
if (!event || !event.target || !event.target.files || event.target.files.length === 0) {
return;
}
const name = event.target.files[0].name;
const lastDot = name.lastIndexOf('.');
const fileName = name.substring(0, lastDot);
const ext = (name.substring(lastDot + 1)).toUpperCase();
if (ext =="JPG") {
extension.value = "image/jpeg";
CanContinue = true;
} else if (ext =="JPEG") {
extension.value = "image/jpeg";
CanContinue = true;
} else if (ext =="PNG") {
extension.value = "image/png";
CanContinue = true;
} else if (ext =="PDF") {
extension.value = "application/pdf";
CanContinue = true;
} else {
alert("You must upload a PDF, PNG, or JPG of your document.");
CanContinue = false;
}
outputfile.value = fileName;
}
</script>
<form method="post" id="myForm" action="/wheregoing" enctype="multipart/form-data" onsubmit="event.preventDefault(); validateMyForm();">
Please upload a JPG, PNG, or PDF of the front of the document.
<input id='inputfile' type="file" name="dafile" onChange='getFileNameWithExt(event)' required>
<input id='extension' type='hidden' name='ContentType' value="">
<input type="submit">
</form>
以下是目前为止的工作(在Chrome和Firefox中测试):
<form onsubmit="event.preventDefault(); validateMyForm();">
其中validateMyForm()是一个函数,如果验证失败则返回false。关键是使用名称事件。我们不能使用例如e.c preventdefault()。
例如,如果你在表单上有提交按钮,为了阻止它的传播,只需编写event.preventDefault();在点击提交按钮或进入按钮时调用的函数中。
Hemant和Vikram的回答在Chrome浏览器中并不完全适用。event.preventDefault ();脚本阻止页面提交,无论是否通过验证。相反,我必须移动event.preventDefault();输入if语句,如下所示:
if(check if your conditions are not satisfying)
{
event.preventDefault();
alert("validation failed false");
returnToPreviousPage();
return false;
}
alert("validations passed");
return true;
}
感谢赫曼特和维克拉姆让我走上正轨。
禁用提交按钮也可以帮助阻止表单提交。
<input style="display:none" type="submit" disabled>