【问题标题】:Dynamically changing text field value using JSTL使用 JSTL 动态更改文本字段值
【发布时间】:2016-07-13 09:29:07
【问题描述】:

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

我有一个选择元素,我已经设法使用 JSTL 填充了一个数组列表。但是,只要选择了下拉列表中的不同选项,我也需要动态地更改ReadOnly文本字段的值,并且在文本字段中放入的值与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>

我尝试使用 js 函数来更改文本字段的值,但到目前为止,我还没有成功。

function managerfill() {
var x = document.getElementById("department").selectedIndex;
document.getElementById("manager").value="${departments[x].manager}";
}

如果部门和经理字段都是下拉列表会更容易,但我们需要将经理设置为文本字段,所以我在尝试解决它时有点不知所措。

【问题讨论】:

    标签: javascript jsp jstl


    【解决方案1】:

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

    【讨论】:

    • 谢谢!昨天我在考虑时想到了使用隐藏的选择字段并将其值放入文本框中的想法,但这比我想象的要干净得多。
    猜你喜欢
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    相关资源
    最近更新 更多