我有一個名為 add.jsp 的檔案,我用 Java 將資料添加到資料庫中。
在這個檔案中,我從資料庫中帶了第一個下拉串列中的聯賽,該聯賽的球隊顯示在所選聯賽的第二和第三下拉串列中。
表格開始如下。
由于 onchange="this.form.submit();" 在第一個下拉串列部分中,選擇完成后,表單提交并轉到 addemp servlet。
當我從第一個下拉串列中選擇聯賽時,如何防止表單提交?以及只有在選擇所有資料并登錄后單擊底部提交按鈕時,如何才能使其進入 addemp servlet?
我的代碼在body標簽之間如下..
截圖在這里
沒有 onchange 事件截圖在這里
<div class="row justify-content-center">
<div class="col-sm-4">
<form class="form-group" action="addemp" method="post">
<label class="form-label" for="name">Choose a League </label> <select
name="leagues" id="leagues" class="form-control mb-3"
style="width: 200px;" onchange="this.form.submit();">
<option value="0">Select League</option>
<%
Connection conn;
Statement stm;
ResultSet rs;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/teams", "root", "Fener2013");
String query = "select * from leagues";
stm = conn.createStatement();
rs = stm.executeQuery(query);
while (rs.next()) {
%>
<option value="<%=rs.getInt("league_id")%>"
<%
if(request.getParameter("leagues")!= null)
{
if(rs.getInt("league_id")==Integer.parseInt(request.getParameter("leagues")))
{
out.print("selected");
}
}
%>><%=rs.getString("league_name")%></option>
<%
}
}
catch (Exception ex) {
ex.printStackTrace();
}
%>
</select> <label class="form-label" for="name">Home Team</label> <select
name="home_team" class="form-control mb-3" style="width: 200px;">
<option value="0">Select Home Team</option>
<%
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/teams", "root", "Fener2013");
String query = "select * from teams where league_id=?";
PreparedStatement psmt = con.prepareStatement(query);
psmt.setString(1, request.getParameter("leagues"));
ResultSet rset = psmt.executeQuery();
while(rset.next())
{
%>
<option value="<%=rset.getInt("team_id")%>">
<%=rset.getString("team_name")%></option>
<%
}
}
catch (Exception ex) {
ex.printStackTrace();
}
%>
</select> <label class="form-label" for="name">Away Team</label> <select
name="home_team" class="form-control mb-3" style="width: 200px;">
<option value="0">Select Away Team</option>
<%
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/teams", "root", "Fener2013");
String query = "select * from teams where league_id=?";
PreparedStatement psmt = con.prepareStatement(query);
psmt.setString(1, request.getParameter("leagues"));
ResultSet rset = psmt.executeQuery();
while(rset.next())
{
%>
<option value="<%=rset.getInt("team_id")%>">
<%=rset.getString("team_name")%></option>
<%
}
}
catch (Exception ex) {
ex.printStackTrace();
}
%>
</select> <label class="form-label" for="name">Enter Match Date
(YYYY-MM-DD)</label> <input name="match_date" type="text"
class="form-control mb-3" style="width: 200px"> <label
class="form-label" for="name">Home Score</label> <input
name="home_score" type="text" class="form-control mb-3"
style="width: 200px;"> <label class="form-label"
for="name">Away Score</label> <input name="away_score" type="text"
class="form-control mb-3" style="width: 200px;"> <label
class="form-label" for="name">Home Team HT Score</label> <input
name="home_ht_score" type="text" class="form-control mb-3"
style="width: 200px;"> <label class="form-label"
for="name">Away Team HT Score</label> <input name="away_ht_score"
type="text" class="form-control mb-3" style="width: 200px;">
<label class="form-label" for="name">Week</label> <input
name="week" type="text" class="form-control mb-3"
style="width: 200px;">
<div class="d-md-flex justify-content-md-end">
<button class="btn btn-primary mb-4" type="submit">Save
Match Result</button>
</div>
</form>
</div>
</div>
最好的祝福,
uj5u.com熱心網友回復:
首先我想知道你為什么在select上添加onChange?你想對 onchange 事件做些什么嗎?如果我考慮當前給定的資訊,那么只需從選擇中洗掉 onChange。提交按鈕已經很好了。它的型別是提交它應該作業。
如果它不起作用,請告訴我更多詳細資訊,我會盡力解決您的問題。
從這里更新:
您需要創建一個javascript函式并將其稱為第一個選擇的onChange。此函式將在當前 url 中重新加載當前頁面選擇的值。
funtion onLeagueChange(){
var leagueValue = document.getElementById("leagues").value;
window.location.href = your_url "?leagues=" leagueValue;
}
這是在不使用其他檔案的情況下解決您的問題。
您更新的代碼
<div class="row justify-content-center">
<div class="col-sm-4">
<form class="form-group" action="addemp" method="post">
<label class="form-label" for="name">Choose a League </label> <select
name="leagues" id="leagues" class="form-control mb-3"
style="width: 200px;" onchange="onLeagueChange()">
<option value="0">Select League</option>
<%
Connection conn;
Statement stm;
ResultSet rs;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/teams", "root", "Fener2013");
String query = "select * from leagues";
stm = conn.createStatement();
rs = stm.executeQuery(query);
while (rs.next()) {
%>
<option value="<%=rs.getInt("league_id")%>"
<%
if(request.getParameter("leagues")!= null)
{
if(rs.getInt("league_id")==Integer.parseInt(request.getParameter("leagues")))
{
out.print("selected");
}
}
%>><%=rs.getString("league_name")%></option>
<%
}
}
catch (Exception ex) {
ex.printStackTrace();
}
%>
</select> <label class="form-label" for="name">Home Team</label> <select
name="home_team" class="form-control mb-3" style="width: 200px;">
<option value="0">Select Home Team</option>
<%
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/teams", "root", "Fener2013");
String query = "select * from teams where league_id=?";
PreparedStatement psmt = con.prepareStatement(query);
psmt.setString(1, request.getParameter("leagues"));
ResultSet rset = psmt.executeQuery();
while(rset.next())
{
%>
<option value="<%=rset.getInt("team_id")%>">
<%=rset.getString("team_name")%></option>
<%
}
}
catch (Exception ex) {
ex.printStackTrace();
}
%>
</select> <label class="form-label" for="name">Away Team</label> <select
name="home_team" class="form-control mb-3" style="width: 200px;">
<option value="0">Select Away Team</option>
<%
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/teams", "root", "Fener2013");
String query = "select * from teams where league_id=?";
PreparedStatement psmt = con.prepareStatement(query);
psmt.setString(1, request.getParameter("leagues"));
ResultSet rset = psmt.executeQuery();
while(rset.next())
{
%>
<option value="<%=rset.getInt("team_id")%>">
<%=rset.getString("team_name")%></option>
<%
}
}
catch (Exception ex) {
ex.printStackTrace();
}
%>
</select> <label class="form-label" for="name">Enter Match Date
(YYYY-MM-DD)</label> <input name="match_date" type="text"
class="form-control mb-3" style="width: 200px"> <label
class="form-label" for="name">Home Score</label> <input
name="home_score" type="text" class="form-control mb-3"
style="width: 200px;"> <label class="form-label"
for="name">Away Score</label> <input name="away_score" type="text"
class="form-control mb-3" style="width: 200px;"> <label
class="form-label" for="name">Home Team HT Score</label> <input
name="home_ht_score" type="text" class="form-control mb-3"
style="width: 200px;"> <label class="form-label"
for="name">Away Team HT Score</label> <input name="away_ht_score"
type="text" class="form-control mb-3" style="width: 200px;">
<label class="form-label" for="name">Week</label> <input
name="week" type="text" class="form-control mb-3"
style="width: 200px;">
<div class="d-md-flex justify-content-md-end">
<button class="btn btn-primary mb-4" type="submit">Save
Match Result</button>
</div>
</form>
</div>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/422581.html
標籤:
上一篇:Tomcat10(jakarta.servlet.*)上JSP(不是JSF)中的CDI
下一篇:我想使用提交按鈕兩次
