同一行的两种不同形式的按钮
Button of two different forms on the same line
我刚刚注册,我真的希望你能帮助我。我试图将来自两种不同形式的两个按钮放在同一行上;我通过查看此站点和其他站点来帮助自己。 “删除”按钮有效,而“更新”按钮无效。你能帮帮我吗?
我正在 Spring.
创建一个 CRUD
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<spring:url value="/resources/css/style1.css" var="style1" />
<link href="${style1}" rel="stylesheet" />
</head>
<body>
<form id="update" action="/update" method="post">
<c:forEach var="fruit" items="${listFruit}">
<input type="hidden" name="id" value="${fruit.id}" />
Name: <input type="text" name="name" value="${fruit.name}" />
Geographical Origin: <input type="text" name="geographicalorigin" value="${fruit.geographicalorigin}" />
</c:forEach>
</form>
<form id="delete" action="/delete" method="POST">
<c:forEach var="fruit" items="${listFruit}">
<input name="fruit" type="hidden" value="${fruit.id}" />
</c:forEach>
</form>
<input type="submit" id="up" value="Update" />
<input type="submit" id="de" value="Delete" />
<script>
document.getElementById('up').addEventListener('click', function() {
document.getElementById('update').submit();
});
document.getElementById('de').addEventListener('click', function() {
document.getElementById('delete').submit();
});
</script>
</body>
</html>
控制器:
@RequestMapping(value = "update", method = RequestMethod.POST)
public ModelAndView update1(@RequestParam("id") String id, @RequestParam("name") String name,
@RequestParam("geographicalorigin") String geographicalorigin, ModelAndView mv, RedirectAttributes redirectAttrs) throws ParseException {
Fruit fruit = new Fruit();
fruit.setId(id);
fruit.setName(name);
fruit.setGeographicalorigin(geographicalorigin);
int counter = fruitDao.updateFruit(fruit);
if (counter > 0) {
mv.addObject("msg", "successful update");
return new ModelAndView("redirect:/update/"+id);
} else {
mv.addObject("msg", "Error");
}
mv.setViewName("updatefruit");
return mv;
}
@RequestMapping(value = "/delete", method = RequestMethod.POST)
public ModelAndView deleteFruit(ModelAndView mv, @RequestParam("fruit") String id)
throws IOException {
int counter = fruitDao.deleteFruit(fruit);
if (counter > 0) {
mv.addObject("msg", "Delete");
} else {
mv.addObject("msg", "Error.");
}
mv.setViewName("deletefruit");
return mv;
}
在将两个按钮放在同一行之前,代码是这样的。在这里他们都完美地工作。
<form action="/update" method="post">
<c:forEach var="fruit" items="${listFruit}">
<input type="hidden" name="id" value="${fruit.id}" />
VARIOUS INPUT TIPE "TEXT"
<input type="submit" id="up" value="Update" />
</c:forEach>
</form>
<form action="/delete" method="POST">
<c:forEach var="fruit" items="${listFruit}">
<input name="fruit" type="hidden" value="${fruit.id}" />
<input type="submit" id="de" value="Delete" />
</c:forEach>
</form>
错误:
error
错误控制台:
未捕获的 TypeError:无法在 HTMLInputElement 处读取 属性 'submit' 的 null。 (923:57)
其中923是我在表单中输入的id
查看源代码:
<!DOCTYPE html>
<html>
<head>
<link href="/FruitSpring/resources/css/style1.css;jsessionid=1D2A5AE3E88AEE99FC67D7C8644D0666" rel="stylesheet" />
</head>
<body>
<form id="update "action="/update" method="post">
<pre>
<input type="hidden" name="id" value="874" />
Name: <input type="text" name="name" value="Orange" />
Geographical Origin: <input type="text" name="geographicalorigin" value="" />
</pre>
</form>
<form id="delete" action="/delete" method="POST">
<input name="fruit" type="hidden" value="874"/>
</form>
<input type="submit" id="up" value="Update" />
<input type="submit" id="de" value="Delete"/>
<script>
document.getElementById('up').addEventListener('click', function() {
document.getElementById('update').submit();
});
document.getElementById('de').addEventListener('click', function() {
document.getElementById('delete').submit();
});
</script>
</body>
</html>
在表单中使用formaction formname
按钮中的动作
<form action="/action_page.php" method="get">
<label for="fname">First name:</label>
<input type="text" id="fname" name="fname"><br><br>
<label for="lname">Last name:</label>
<input type="text" id="lname" name="lname"><br><br>
<button type="submit">Submit</button>
<button type="submit" formaction="/action_page2.php">Submit to another page</button>
</form>
表格名称
<form action="/action_page.php" method="get" id="form1">
<label for="fname">First name:</label>
<input type="text" id="fname" name="fname"><br><br>
<label for="lname">Last name:</label>
<input type="text" id="lname" name="lname">
</form>
<button type="submit" form="form1" value="Submit">Submit</button>
<form action="/update" method="post">
<c:forEach var="fruit" items="${listFruit}">
<input type="hidden" name="id" value="${fruit.id}" />
VARIOUS INPUT TIPE "TEXT"
<input type="submit" id="up" value="Update", formaction="/update" />
<input type="submit" id="de" value="Update", formaction="/delete" />
</c:forEach>
</form>
看到我只是在按钮中添加了formaction属性
表单外的提交按钮不会提交任何内容。我假设您添加了 JavaScript 来尝试解决该问题。根据您在问题中显示的内容,它 应该 工作,但根据您的评论,您似乎对此有问题。
我们可以尝试解决这个问题,但实际上您根本不需要 JavaScript。自 HTML5 出现以来,您可以将按钮与表单相关联,即使该按钮位于 <form>...</form>
标记之外。
为此,您只需向每个按钮添加一个 form=...
属性,其中包含目标表单的 ID。
然后您可以完全删除 JavaScript。
演示:
<form id="update" action="/update" method="post">
<input type="hidden" name="id" value="${fruit.id}" />
</form>
<form id="delete" action="/delete" method="POST">
<input name="fruit" type="hidden" value="${fruit.id}" />
</form>
<input type="submit" id="up" form="update" value="Update" />
<input type="submit" id="de" form="delete" value="Delete" />
文档:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#htmlattrdefform
我刚刚注册,我真的希望你能帮助我。我试图将来自两种不同形式的两个按钮放在同一行上;我通过查看此站点和其他站点来帮助自己。 “删除”按钮有效,而“更新”按钮无效。你能帮帮我吗? 我正在 Spring.
创建一个 CRUD<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<spring:url value="/resources/css/style1.css" var="style1" />
<link href="${style1}" rel="stylesheet" />
</head>
<body>
<form id="update" action="/update" method="post">
<c:forEach var="fruit" items="${listFruit}">
<input type="hidden" name="id" value="${fruit.id}" />
Name: <input type="text" name="name" value="${fruit.name}" />
Geographical Origin: <input type="text" name="geographicalorigin" value="${fruit.geographicalorigin}" />
</c:forEach>
</form>
<form id="delete" action="/delete" method="POST">
<c:forEach var="fruit" items="${listFruit}">
<input name="fruit" type="hidden" value="${fruit.id}" />
</c:forEach>
</form>
<input type="submit" id="up" value="Update" />
<input type="submit" id="de" value="Delete" />
<script>
document.getElementById('up').addEventListener('click', function() {
document.getElementById('update').submit();
});
document.getElementById('de').addEventListener('click', function() {
document.getElementById('delete').submit();
});
</script>
</body>
</html>
控制器:
@RequestMapping(value = "update", method = RequestMethod.POST)
public ModelAndView update1(@RequestParam("id") String id, @RequestParam("name") String name,
@RequestParam("geographicalorigin") String geographicalorigin, ModelAndView mv, RedirectAttributes redirectAttrs) throws ParseException {
Fruit fruit = new Fruit();
fruit.setId(id);
fruit.setName(name);
fruit.setGeographicalorigin(geographicalorigin);
int counter = fruitDao.updateFruit(fruit);
if (counter > 0) {
mv.addObject("msg", "successful update");
return new ModelAndView("redirect:/update/"+id);
} else {
mv.addObject("msg", "Error");
}
mv.setViewName("updatefruit");
return mv;
}
@RequestMapping(value = "/delete", method = RequestMethod.POST)
public ModelAndView deleteFruit(ModelAndView mv, @RequestParam("fruit") String id)
throws IOException {
int counter = fruitDao.deleteFruit(fruit);
if (counter > 0) {
mv.addObject("msg", "Delete");
} else {
mv.addObject("msg", "Error.");
}
mv.setViewName("deletefruit");
return mv;
}
在将两个按钮放在同一行之前,代码是这样的。在这里他们都完美地工作。
<form action="/update" method="post">
<c:forEach var="fruit" items="${listFruit}">
<input type="hidden" name="id" value="${fruit.id}" />
VARIOUS INPUT TIPE "TEXT"
<input type="submit" id="up" value="Update" />
</c:forEach>
</form>
<form action="/delete" method="POST">
<c:forEach var="fruit" items="${listFruit}">
<input name="fruit" type="hidden" value="${fruit.id}" />
<input type="submit" id="de" value="Delete" />
</c:forEach>
</form>
错误: error
错误控制台: 未捕获的 TypeError:无法在 HTMLInputElement 处读取 属性 'submit' 的 null。 (923:57)
其中923是我在表单中输入的id
查看源代码:
<!DOCTYPE html>
<html>
<head>
<link href="/FruitSpring/resources/css/style1.css;jsessionid=1D2A5AE3E88AEE99FC67D7C8644D0666" rel="stylesheet" />
</head>
<body>
<form id="update "action="/update" method="post">
<pre>
<input type="hidden" name="id" value="874" />
Name: <input type="text" name="name" value="Orange" />
Geographical Origin: <input type="text" name="geographicalorigin" value="" />
</pre>
</form>
<form id="delete" action="/delete" method="POST">
<input name="fruit" type="hidden" value="874"/>
</form>
<input type="submit" id="up" value="Update" />
<input type="submit" id="de" value="Delete"/>
<script>
document.getElementById('up').addEventListener('click', function() {
document.getElementById('update').submit();
});
document.getElementById('de').addEventListener('click', function() {
document.getElementById('delete').submit();
});
</script>
</body>
</html>
在表单中使用formaction formname
按钮中的动作
<form action="/action_page.php" method="get">
<label for="fname">First name:</label>
<input type="text" id="fname" name="fname"><br><br>
<label for="lname">Last name:</label>
<input type="text" id="lname" name="lname"><br><br>
<button type="submit">Submit</button>
<button type="submit" formaction="/action_page2.php">Submit to another page</button>
</form>
表格名称
<form action="/action_page.php" method="get" id="form1">
<label for="fname">First name:</label>
<input type="text" id="fname" name="fname"><br><br>
<label for="lname">Last name:</label>
<input type="text" id="lname" name="lname">
</form>
<button type="submit" form="form1" value="Submit">Submit</button>
<form action="/update" method="post">
<c:forEach var="fruit" items="${listFruit}">
<input type="hidden" name="id" value="${fruit.id}" />
VARIOUS INPUT TIPE "TEXT"
<input type="submit" id="up" value="Update", formaction="/update" />
<input type="submit" id="de" value="Update", formaction="/delete" />
</c:forEach>
</form>
看到我只是在按钮中添加了formaction属性
表单外的提交按钮不会提交任何内容。我假设您添加了 JavaScript 来尝试解决该问题。根据您在问题中显示的内容,它 应该 工作,但根据您的评论,您似乎对此有问题。
我们可以尝试解决这个问题,但实际上您根本不需要 JavaScript。自 HTML5 出现以来,您可以将按钮与表单相关联,即使该按钮位于 <form>...</form>
标记之外。
为此,您只需向每个按钮添加一个 form=...
属性,其中包含目标表单的 ID。
然后您可以完全删除 JavaScript。
演示:
<form id="update" action="/update" method="post">
<input type="hidden" name="id" value="${fruit.id}" />
</form>
<form id="delete" action="/delete" method="POST">
<input name="fruit" type="hidden" value="${fruit.id}" />
</form>
<input type="submit" id="up" form="update" value="Update" />
<input type="submit" id="de" form="delete" value="Delete" />
文档:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#htmlattrdefform