JSP页面上的验证不起作用

时间:2014-12-11 12:50:36

标签: java javascript jsp validation servlets

我有一个带有一个输入文本框的jsp页面,在输入数字后,页面被重定向到一个servlet,我在那里检索该数字,让我们说在页面上显示它。我正在尝试在JavaScript中进行验证但是尽管如此,它仍然在执行servlet,即使验证返回false并且我在以下行的servlet上的java.lang.NumberFormatException: For input string: ""方法中得到doGetint 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>

2 个答案:

答案 0 :(得分:0)

这看起来很疯狂。在某些浏览器上检查了这段代码后,即使返回的onsubmit也会执行表单提交事件。

onsubmit="return validateForm()";

这样您就可以使用event.preventDefault()函数阻止进一步执行表单。

因此,在onsubmit中使用条件语句将节省一天。下面将使用完整的语句。

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

还有更多,jz评论。

答案 1 :(得分:0)

如果您在字段中给出了错误的名称以进行聚焦,那么它会发生,否则它应该可以正常工作。请再次检查java脚本函数。