Javascript 如何使用两种方法,一种来自Javaservlet,另一种来自输入按钮上的js文件

Javascript 如何使用两种方法,一种来自Javaservlet,另一种来自输入按钮上的js文件,javascript,java,html,jsp,methods,Javascript,Java,Html,Jsp,Methods,您好,我有一个Java Servlet“AddEmployeeServlet”,每当单击我的按钮时都会调用它,因此我们可以说,按钮就是将我表单的所有字段值提交给Servlet的那个按钮 但是,我想使用这个按钮来实现一个JavaScript方法,在它将值提交到servlet之前,验证所有表单字段都不是空的。但我不知道如何实现这一点,似乎JS方法没有被调用,空信息没有经过任何验证就进入servlet。如果有任何关于此事的建议,我将不胜感激 我的JSP: <%@ page language=&q

您好,我有一个Java Servlet“AddEmployeeServlet”,每当单击我的按钮时都会调用它,因此我们可以说,按钮就是将我表单的所有字段值提交给Servlet的那个按钮

但是,我想使用这个按钮来实现一个JavaScript方法,在它将值提交到servlet之前,验证所有表单字段都不是空的。但我不知道如何实现这一点,似乎JS方法没有被调用,空信息没有经过任何验证就进入servlet。如果有任何关于此事的建议,我将不胜感激

我的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">
 <script type="text/javascript" src="js/addEmployeeScripts.js"></script>
 <input type="text" name="emp_id" placeholder = "ID"class = "input" 
 onkeypress="return isNumber(event)">
 <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" onsubmit="return voidFieldsValidator()">
 </form>
 </div>
 </body>
 <a class = "home-link" href="index.jsp"> Employee APP </a>
</html>

添加员工表单
添加员工

请填写此字段
JS文件中的我的JavaScript方法:

function voidFieldsValidator() {
    var flag = true;
    var formFields = [document.getElementsByName("emp_id").value, document.getElementsByName("emp_name").value,
    document.getElementsByName("emp_email").value,  document.getElementsByName("emp_phone").value]
    for(i = 0; i < formFields.length; i++) {
        if(formFields[i] === "") {
            console.log(formFiels[i].value)
            flag = false;
        }
    }
    return flag;
}
函数voidFieldsValidator(){
var标志=真;
var formFields=[document.getElementsByName(“emp_id”).value,document.getElementsByName(“emp_name”).value,
document.getElementsByName(“emp_电子邮件”).value,document.getElementsByName(“emp_电话”).value]
对于(i=0;i


我对这类web项目非常陌生,我不知道调用servlet方法是否会干扰按钮的“onclick…”属性。我不认为我调用js方法的方式是错误的,因为我已经从不同的输入调用了另一个方法(emp_id)它工作正常。

您需要将
onsubmit
放在
表单
标签中,这样当您单击提交按钮时会调用该标签,如果返回标志为
true
,则表单将提交,否则它将不提交。此外,当您使用时,它将返回具有相同名称的
Nodelist
集合,以便访问需要指定索引的任何元素,即:0、1等

演示代码

函数voidFieldsValidator(){
var标志=真;
//使用[0]获取具有该名称的第一个元素
var formFields=[document.getElementsByName(“emp_id”)[0]。值,document.getElementsByName(“emp_name”)[0]。值,
document.getElementsByName(“emp_电子邮件”)[0]。值,document.getElementsByName(“emp_电话”)[0]。值
]
对于(i=0;i

请填写此字段

Hello@Swati,你总是很难帮我省钱,我在表单标记中实现了“onsubmit:…”,但是我的程序仍然在调用servlet,不管某些字段是否为空。在我的Servlet中提供从“”到整数的formatException。这是正确的方法吗?或者我必须调用servlet到js方法中吗?如果您没有填写输入,请再次尝试上面的代码,然后表单将不会提交(不会发生重定向),并根据这一点进行更改。同时检查
js
code我在那里也做了一些更改。你说得很对,我没有意识到getElementsByName返回数组,所以我使用了某种列表的值,而不是元素本身。再次感谢@Swati