如果其中一个字段为空(JSP),如何阻止我的表单提交?

时间:2013-05-01 14:54:41

标签: jsp validation client

下面是我的JSP文件,我使用servlet来检查字段是否为空,但显然这需要在客户端完成。如何在按下提交按钮且字段为空时阻止表单提交?

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page session="false" %>
<!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">
<style type="text/css">
h1 { font-family : cooper black;}
</style>
<title>Add a Phonebook Entry</title></head>
<body>
<h1> Add a Phonebook Entry</h1>
<form action="process.do" method="GET">
<table summary="phonebook entry table">
    <tr>
        <td>Last name:</td>

        <%
        String last = "";
        String first = "";
        String phone = "";

        if(request.getParameter("surname")!=null){
            last = (String) request.getParameter("surname");
        }
        if(request.getParameter("firstname")!=null){
            first = (String) request.getParameter("firstname");
        }

        if(request.getParameter("phone")!=null){
            phone = (String) request.getParameter("phone");
        }
         %>

        <td><input type="text" title="enter your last name here" name="surname" name="initials" size=10 maxlength=10 value=<%= last %> ></td>
    </tr>
    <tr>
        <td>First name:</td>
        <td><input type="text" name="firstname" size=10 maxlength=10 value=<%=first %> ></td>
    </tr>
    <tr>
        <td>Phone number: </td>
        <td><input type="text" name="phone" maxlength=10 size=10 value=<%=phone %> > </td>
    </tr>
</table>
<br><input type="submit" value="Submit">
</form>
<p> View the phonebook <a href="./Display.jsp">here</a></p>

3 个答案:

答案 0 :(得分:2)

<强>的JavaScript

基本上有一个简短的脚本,用于检查所有输入是否已填充。如果没有,则阻止提交请求。

您仍然需要实现某些服务器端来检查字段,因为用户可以禁用JavaScript。我的以下建议也是如此。

<强> HTML5

还有HTML5必需属性。 我认为所有浏览器都不支持此功能。

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

如果未填充且启用了HTML5验证,则表单将不会提交。

答案 1 :(得分:1)

使用jQuery可以使用那一小段JavaScript:

$("#form").submit(function() {
    var requiredFailed = true;
    $("#form input:text").each(function() {
        if ($.trim($(this).val()).length == 0) {
            requiredFailed = false;
            return false;
        }
    });
    return requiredFailed;
});

查看文本类型的所有输入,如果任何输入为null,则不会提交表单。

答案 2 :(得分:0)

尝试以下方法......应该记住&lt;%.....%&gt;

out.print("Please enter ");
if(fieldname.length()==0){
    out.print("field name");
}
if (fieldname2.length()==0) {
    out.print(" and ");
}
if (fieldname2.length()==0){  
    out.print("field name2");
}
out.println("breakline");