使用 JSTL 动态更改文本字段值

Dynamically changing text field value using JSTL

我是 JSTL 的初学者,因为我最近才开始使用它来避免在我的 JSP 中使用 scriplet,我想就我遇到的问题寻求帮助。

我有一个 select 元素,我已经使用 JSTL 将其填充为数组列表。但是,每当下拉列表中的不同选项被 selected 时,我还需要动态更改只读文本字段的值,并且要放入文本字​​段的值与数组列表中的索引相同 selected 选项,这就是我遇到问题的地方。

<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/tag 或隐藏的 select 中打印它并从中获取结果。 替换 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;
}