我是 JSTL 的初学者,因为我最近才开始使用它以避免在我的 JSP 中使用 scriplet,我想就我遇到的问题寻求帮助。
我有一个 select 元素,我已经使用 JSTL 设法用数组列表填充了它。但是,每当选择下拉列表中的不同选项时,我还需要动态更改只读文本字段的值,并且要放入文本字段的值与所选选项在数组列表中的索引相同,这就是我遇到了麻烦。
<select id="department" onchange="managerfill()">
<c:forEach var="dept" items="${departments}">
<option value="${dept.deptname}"><c:out value="${dept.deptname}"/></option>
</c:forEach>
</select>
<input type="text" id="manager" readonly>
我尝试使用 js 函数来更改文本字段的值,但到目前为止,我还没有成功。
function managerfill() {
var x = document.getElementById("department").selectedIndex;
document.getElementById("manager").value="${departments[x].manager}";
}
如果部门和经理字段都是下拉列表会更容易,但我们需要将经理设为文本字段,所以我有点不知所措。
最佳答案
您不能在呈现的页面上使用 jSTL 语言。 jSTL 仅用于服务器端,不能用于最终用户浏览器。
需要用js来改
你写的函数很好,jSTL语法不能再解释了。
function managerfill() {
var select = document.getElementById("department");
var x = select.selectedIndex;
document.getElementById("manager").value = select.options[x].text;
}
这样的事情应该可行。
但我认为您要打印的文本是服务器端的,因此您可以在某些 html/标签或隐藏选择中打印它并从中获取结果。
替换 select.options[x].text
:
<select id="departments-manager" class="hidden">
<c:forEach var="dept" items="${departments}">
<option value="${dept.manager}"><c:out value="${dept.manager}"/></option>
</c:forEach>
</select>
function managerfill() {
var select = document.getElementById("department");
var selectManager = document.getElementById("departments-manager");
var x = select.selectedIndex;
document.getElementById("manager").value = selectManager.options[x].text;
}
关于javascript - 使用 JSTL 动态更改文本字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38347727/