JavaScript验证不适用于HTML表单

时间:2016-10-03 09:13:57

标签: javascript

我想验证我的jsp表单。

我的test.jsp页面如下所示

<%@ page import="java.util.Date" %>
<%@ 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>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Test</title>
<script>
    function validateForm() {
        var address = document.getElementById("txtAddress");
        alert("Address : " + address);
        if (address == null || address == "") {
            alert("Enter Address");
            return false;
        }

        var city = document.getElementById("txtCity");
        if (city == null || city == "") {
            alert("Enter City");
            return false;
        }
    }
</script>
</head>
<body>
    <form name="TestForm1" action="loginServlet" method="post" onsubmit="return validateForm();">
        <table>
            <tr>
                <td>Address :</td>
                <td><input type="text" name="txtAddress" value="${reqObj.address}" /></td>
                <td>City :</td>
                <td><input type="text" name="txtCity" value="${reqObj.city}" /></td>
            </tr>
            <tr align="left">
                <td colspan="4"><input type="submit" value="Submit" /></td>
            </tr>
        </table>
        <%
            String createdDate = "";
            Date dt = new Date();
            createdDate = dt.toString();
            System.out.println("currentTime>>>>" + createdDate);
        %>
    </form>
</body>
</html>

问题是, 运行此项目时,我的test.jsp表单显示为空的地址字段,当我点击提交按钮时,警告显示&#34;地址:null&#34;

但是当我在地址文本框字段上写一些值时,我再次点击提交按钮,它显示我&#34;地址:null&#34;

我在Eclipse Mars 1中使用JAVA。

5 个答案:

答案 0 :(得分:1)

定义输入标记的id,因为您使用document.getElementById()并且找不到id,因此每次都返回null。

答案 1 :(得分:1)

您没有地址输入的ID,您可以使用document.getElementsByName(name)代替。

var address = document.getElementsByName("txtAddress")[0];

或将ID添加到地址元素

<input type="text" id="txtAddress" value="${reqObj.address}" />

答案 2 :(得分:1)

jsp中没有id属性。

<input type="text" name="txtAddress" value="${reqObj.address}" />

添加idid="txtAddress")attr,然后使用document.getElementById("txtAddress");

<input type="text" id="txtAddress" name="txtAddress" value="${reqObj.address}" />

您可以检查length而不是null""

if(address.value.trim().length == 0)

不仅可以使用id,还可以使用class,name,tag

  • document.getElementById("xyz");

  • document.getElementsByTagName("p");

  • document.getElementsByClassName("abc");

  • document.getElementsByName("xyz");

更新:主要是您错过了该元素的 value 。取值,然后检查

<强> address.value.trim().length

答案 3 :(得分:0)

您可以使用html5验证。这是同样的jfiddle https://jsfiddle.net/ianoxley/VY8KU/

<input type="text" name="txtAddress" required>

答案 4 :(得分:0)

您指定“txtAddress”作为名称而不是id。尝试通过创建id来访问元素,如下所示

<input type="text" id="txtAddress" name="txtAddress" value="${reqObj.address}" />

如果您对添加ID不感兴趣并且想要按名称访问txtAddress值,请将javascript函数中的行更改为如下

var address = document.TestForm1.txtAddress;

这里的地址仍然是一个对象。检查任何输入类型的验证时,请指定object.value而不是直接检查对象。例如:

var address = document.TestForm1.txtAddress.value;
相关问题