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

标签 javascript jsp jstl

我是 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/

相关文章:

javascript - Disqus 评论框不显示(根本)

javascript - 导入直接从github安装的npm模块

java - request.getParameter 获取 java.lang.NumberFormatException : null

javascript - 如何使用 jquery 在 css 中使用图像的绝对路径?

java - Spring MVC 重定向属性消息

java - 不知道如何迭代 <forEach> 中提供的 "items"

javascript - 为什么在检查之前会用 “var undefined;” 声明未定义?

javascript - Lightbox jQuery 与下拉菜单冲突

java - JSP异常处理

jsp - 使用 JSTL 检查集合大小