javascript - 为什么 `onclick()`在表单提交之前被调用?

标签 javascript forms jsp post onclick

我有一个通过 submit 提交的表单按钮。单击它时,它将执行 Java 脚本验证并在文本框下显示错误字段。因此,如果出现错误,控件将返回到同一页面。我的问题是,在表单发布后,我不断看到两个错误字段,我需要删除一个并只保留一个。

为此,我从提交按钮调用了一个点击函数,我试图找出错误 div id 是否存在,如下所示:

<input type="image" name="submit" onclick = 'checkErrors()'>

现在在 checkErrors() 内方法:

function checkErrors(){
var errorElem1 = document.getElementById('errField1');
var errorElem2 = document.getElementById('errField2');
if((errorElem1 != null) && (errorElem2 != null)){
alert("Two error fields.");
errorElem2.style.display='none';
}
}

现在,一旦我点击按钮,我就找不到警报了。

所以我删除了 if 条件并将其保留为:

 function checkErrors(){
var errorElem1 = document.getElementById('errField1');
var errorElem2 = document.getElementById('errField2');
errorElem2.style.display='none';
}
} 

现在,我在 Firebug 控制台中看到错误:elem2 is null 。这意味着onclick正在执行,然后只发生表单发布,因此 elem2 onclick 之后就再也找不到了。

表单提交方式为:

<form name="IntitalJspPage" method="post" action="Controller" onsubmit="validate(this); return false;">

现在我可以在这里做什么来在提交表单并且错误字段已呈现在页面上后调用 onclick ?

最佳答案

您使用图像作为输入类型。输入类型没有图像类型。而不是使用 type="button"。改为在 validate 方法中调用提交表单。

关于javascript - 为什么 `onclick()`在表单提交之前被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16919445/

相关文章:

javascript - node.js http 在浏览器中打开静态文本文件

javascript - Umbraco Macro Referenced Root 但在重定位后现在已损坏

javascript - 是否可以在页面上拆分 <form> 标记?

java - 为什么 ${!blabla.blibli} 在 JSTL 中返回 true 即使 blabla 不存在?

java - 如何使用 Struts 2 打印 List<Object[]>?

javascript - 将 div 滑入和滑出视口(viewport)

javascript - 按顺序执行多个 Promise(概念)

javascript - 如何清除加载ajax的表单?

javascript - iOS sessionStorage 和表单提交

jsp - jsp_service()方法可以被重写吗?