我如何使用两种方法,一种来自 Java Servlet,另一种来自输入按钮上的 js 文件
How can i make use of two methods, one from Java Servlet and other from js file on Input button
你好,我有一个 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>
我的 JavaJS 文件中的脚本方法:
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;
}
我对这类 Web 项目真的很陌生,我不知道我调用 servlet 方法是否会干扰按钮的“onclick...”属性。我不认为我调用 js 方法的方式是错误的,因为我已经从不同的输入调用了另一个方法(emp_id 方法)并且它工作正常。
你需要把 onsubmit
放在你的 form
标签里,这样当你点击提交按钮时它会被调用,如果标志 return 是 true
那么表单将提交否则它不会提交。另外,因为你已经使用 getElementsByName 这将 return 你的 Nodelist
集合具有相同的名称以便访问你需要指定索引的任何元素,即:0, 1.etc.
演示代码 :
function voidFieldsValidator() {
var flag = true;
//use [0] to get first element with that name
var formFields = [document.getElementsByName("emp_id")[0].value, document.getElementsByName("emp_name")[0].value,
document.getElementsByName("emp_email")[0].value, document.getElementsByName("emp_phone")[0].value
]
for (i = 0; i < formFields.length; i++) {
if (formFields[i] === "") {
flag = false;
}
console.log(formFields[i])
}
return flag;
}
<!--add onsubmit here-->
<form class="form" action="AddEmployeeServlet" method="post" onsubmit="return voidFieldsValidator()">
<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">
</form>
你好,我有一个 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>
我的 JavaJS 文件中的脚本方法:
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;
}
我对这类 Web 项目真的很陌生,我不知道我调用 servlet 方法是否会干扰按钮的“onclick...”属性。我不认为我调用 js 方法的方式是错误的,因为我已经从不同的输入调用了另一个方法(emp_id 方法)并且它工作正常。
你需要把 onsubmit
放在你的 form
标签里,这样当你点击提交按钮时它会被调用,如果标志 return 是 true
那么表单将提交否则它不会提交。另外,因为你已经使用 getElementsByName 这将 return 你的 Nodelist
集合具有相同的名称以便访问你需要指定索引的任何元素,即:0, 1.etc.
演示代码 :
function voidFieldsValidator() {
var flag = true;
//use [0] to get first element with that name
var formFields = [document.getElementsByName("emp_id")[0].value, document.getElementsByName("emp_name")[0].value,
document.getElementsByName("emp_email")[0].value, document.getElementsByName("emp_phone")[0].value
]
for (i = 0; i < formFields.length; i++) {
if (formFields[i] === "") {
flag = false;
}
console.log(formFields[i])
}
return flag;
}
<!--add onsubmit here-->
<form class="form" action="AddEmployeeServlet" method="post" onsubmit="return voidFieldsValidator()">
<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">
</form>