我有一个带有一个输入文本框的jsp页面,在输入数字后,页面被重定向到一个servlet,我在那里检索该数字,让我们说在页面上显示它。我正在尝试在JavaScript中进行验证但是尽管如此,它仍然在执行servlet,即使验证返回false并且我在以下行的servlet上的java.lang.NumberFormatException: For input string: ""
方法中得到doGet
: int max = Integer.parseInt(request.getParameter("lengthTxt"));
。为什么它似乎绕过验证并仍然执行servlet?怎么解决?谢谢你的帮助!
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script>
function validateForm()
{
if(document.frm.lengthTxt.value=="")
{
alert("Number should not be left blank");
document.frm.lengthTxt.focus();
return false;
}
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Length calc</title>
</head>
<body>
<h3>enter length</h3>
<form name=frm action="MyServlet" onSubmit="return validateForm();">
<input name="lengthTxt" />
<br>
<br>
<input type = "submit" value = "Submit"/>
</form>
</body>
</html>
答案 0 :(得分:0)
这看起来很疯狂。在某些浏览器上检查了这段代码后,即使返回的onsubmit也会执行表单提交事件。
onsubmit="return validateForm()";
这样您就可以使用event.preventDefault()
函数阻止进一步执行表单。
因此,在onsubmit
中使用条件语句将节省一天。下面将使用完整的语句。
<form onsubmit="event.preventDefault(); return validateMyForm();">
还有更多,jz评论。
答案 1 :(得分:0)
如果您在字段中给出了错误的名称以进行聚焦,那么它会发生,否则它应该可以正常工作。请再次检查java脚本函数。