有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

html在Java jsp中输入keyevent时如何隐藏警报div

您好,我有一个简单的jsp表单(html),其中我需要填写4个字段(id、姓名、电子邮件和电话号码)。每当ID输入为空且用户单击“添加”按钮(位于表单底部)时,ID输入字段下方会显示一个隐藏的div,并显示下一条消息:“请完成该字段”

Form

但是,我希望一旦用户在输入字段上键入一个数字,这个div消息就会被再次隐藏。所以我不知道如何获取这个keyevent并将其发送到servlet,并且能够利用${variable}再次隐藏潜水警报消息。我不是在用JavaScript,我是在用Java,所以我想问你,我怎样才能做到这一点

我的JSP:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
 <head>
 <style><%@include file="/css/addEmployeeStyle2.css"%></style>
 <meta http-equiv="Content-Type"
    content="text/html; charset=UTF-8">
 <title> Add Employee Form</title>
 </head>
 <body>
<h1 class = "h1-title">ADD EMPLOYEE</h1>
 <hr class = "hr-line"> 
 <div class = "wrapper">
 <form class = "form" action="AddEmployeeServlet" method="post">
 <input type="text" name="emp_id" placeholder = "ID"class = "input" 
 onkeypress='return event.charCode > 47 && event.charCode < 58'>
 <div id= "error" class="alert-danger" ${loginError eq 1 ? '' : 'hidden'} role="alert">
 <h4>Complete this field please</h4>
 </div>
<input type="text" name="emp_name" placeholder = "Name" class = "input" onkeypress="return (event.charCode > 64 && 
    event.charCode < 91) || (event.charCode > 96 && event.charCode < 123)">
 <input type="text" name="emp_email" placeholder = "Email" class = "input">
 <input type="text" name="emp_phone" placeholder ="Phone" class = "input"
  onkeypress = "return event.charCode > 47 && event.charCode < 58">
 <input class = "btn" type="submit" value="ADD">
 </form>
 </div>
 </body>
 <a class = "home-link" href="index.jsp"> Employee App </a>
</html>

和我的servlet(AddEmployeeServlet)代码:

package edu.uptc.controller;

import java.io.IOException;
import java.util.concurrent.CopyOnWriteArrayList;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import edu.uptc.model.Employee;

/**
 * Servlet implementation class EmployeeServlet
 */
@WebServlet("/AddEmployeeServlet")
public class AddEmployeeServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private CopyOnWriteArrayList<Employee> employeesList;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public AddEmployeeServlet() {
        super();
        employeesList = new CopyOnWriteArrayList<Employee>();
        burnSomeData();
    }

    public void burnSomeData() {
        employeesList.add(new Employee(1, "Juana", "juana@mail", 11111));
        employeesList.add(new Employee(2, "Pedro", "pedro@mail", 22222));
        employeesList.add(new Employee(3, "Carlos", "carlos@mail", 33333));
        employeesList.add(new Employee(4, "Alex", "alex@mail", 44444));
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getSession().setAttribute("loginError", 1);
        if (request.getParameter("emp_id").equals("")) {
            request.getRequestDispatcher("/addEmployee.jsp").forward(request, response);
            request.getSession().setAttribute("loginError", 0);
        } else {
            int id = Integer.valueOf(request.getParameter("emp_id"));
            if (validEmployeeId(id)) {
                employeesList.add(new Employee(id, request.getParameter("emp_name"), request.getParameter("emp_email"), Long.valueOf(request.getParameter("emp_phone"))));

                request.getSession().setAttribute("employeesListSize", employeesList.size());
                request.getRequestDispatcher("/addEmployeePositiveResponse.jsp").forward(request, response);
            } else {
                request.getRequestDispatcher("/addEmployeeNegativeResponse.jsp").forward(request, response);
            }
            request.getSession().setAttribute("employeesList", employeesList);
        }
    }

    protected boolean validEmployeeId(int id) {
        boolean valid = true;
        for (Employee employee : employeesList) {
            if (employee.getEmp_id() == id) {
                valid = false;
                break;
            }
        }
        return valid;
    }
}

共 (1) 个答案

  1. # 1 楼答案

    你不需要调用servlet来隐藏那个div,你只需要使用javascript就可以了。首先检查diverror是否在按键上没有hidden类,如果是,则将hidden类添加到div

    演示代码

    var input = document.querySelector('input[name="emp_id"]');
    //on keypress call this
    input.addEventListener('keypress', function(event) {
      //get reference of div
      var element = document.querySelector('#error')
      //check it doesn't have hidden class
      if (!element.classList.contains("hidden")) {
        element.classList.add("hidden") //hide it
      }
    });
    .hidden {
      display: none
    }
    <input type="text" name="emp_id" placeholder="ID" class="input" onkeypress='return event.charCode > 47 && event.charCode < 58'>
    <div id="error" class="alert-danger" ${loginError eq 1 ? '' : 'hidden'} role="alert">
      <h4>Complete this field please</h4>
    </div>