1
我有一個帶有選擇輸入的表單,我希望在提交後保留選定的選項。在jsp困境中保留HTML選擇選項
到目前爲止,我已經發現了2個解決方案:
select1.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Select 1</title>
<script>
function submitSelected1() {
document.form1.selected.value = document.form1.item.selectedIndex;
document.form1.submit();
}
function retainSelected1(selected) {
if (selected) document.form1.item.selectedIndex = selected;
}
</script>
</head>
<body onload="retainSelected1(${param.selected})">
<form name="form1" action="${pageContext.request.contextPath}/controller" method="post">
<select name="item" onchange="submitSelected1()">
<option selected disabled>-- select item --</option>
<option value="1">Item1</option>
<option value="2">Item2</option>
<option value="3">Item3</option>
<option value="4">Item4</option>
</select>
<input type="hidden" name="selected" value="">
<button type="submit">Submit</button>
</form>
</body>
</html>
select2.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Select 2</title>
<script>
function retainSelected2(selected) {
document.querySelectorAll('[name=form2] option[value="' + selected + '"]')[0].defaultSelected = true;
}
</script>
</head>
<body onload="retainSelected2(${param.item})">
<form name="form2" action="${pageContext.request.contextPath}/controller" method="post">
<select name="item">
<option selected disabled>-- select item --</option>
<option value="1">Item1</option>
<option value="2">Item2</option>
<option value="3">Item3</option>
<option value="4">Item4</option>
</select>
<button type="submit">Submit</button>
</form>
</body>
</html>
的問題是在哪一個更好,爲什麼。如果有更好的解決方案來完成這個任務,我也很感興趣。
在我的情況''選項[選定]'選擇器將始終給' - 選擇項目--'。它應該替換爲'option:check'。然後它工作。 – tarashypka
你的答案幫了我很多。看來'sessionStorage'會將所有東西都保存在客戶端,因此它肯定比我的第一個解決方案更好(因爲我不需要在每個請求中發送'selected'參數)。 'querySelectorAll'通過我的第二個解決方案中的所有選項刪除循環。謝謝。 – tarashypka
如果這是一個有用的答案,請將問題解決! –