Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用JSTL动态更改文本字段值_Javascript_Jsp_Jstl - Fatal编程技术网

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

Javascript 使用JSTL动态更改文本字段值,javascript,jsp,jstl,Javascript,Jsp,Jstl,我是JSTL的初学者,因为我最近才开始使用它来避免在我的JSP中使用scriplets,我想就我遇到的问题寻求帮助 我有一个select元素,我已经使用JSTL用arraylist填充了它。但是,每当选择下拉列表中的不同选项时,我还需要动态更改只读文本字段的值,并且文本字段中的值与所选选项在arraylist中的索引相同,这就是我遇到问题的地方 <select id="department" onchange="managerfill()"> <c:forEach var="d

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

我有一个select元素,我已经使用JSTL用arraylist填充了它。但是,每当选择下拉列表中的不同选项时,我还需要动态更改只读文本字段的值,并且文本字段中的值与所选选项在arraylist中的索引相同,这就是我遇到问题的地方

<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>

如果“部门”和“经理”字段都是下拉列表,情况会更简单,但我们需要将“经理”设置为文本字段,所以我在尝试解决这个问题时有点不知所措

不能在呈现的页面上使用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;
}

函数managerfill(){
var select=document.getElementById(“部门”);
var selectManager=document.getElementById(“部门经理”);
var x=select.selectedIndex;
document.getElementById(“manager”).value=selectManager.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;
}