在onchange事件中显示div标签中的Map值

时间:2017-01-03 07:14:59

标签: javascript java html ajax jsp

在我的JSP中我下载列出所有可用部门,当客户选择部门时,通过AJAX我将在下一个下拉列表中列出所有员工。

对于AJAX目的,我使用:h Partial而我的回复文件是

HahMap<Integer, String>

我的员工下拉代码是

<%@ page contentType="text/xml;charset=UTF-8" language="java"%>
<%@ taglib uri="/WEB-INF/struts-tld/struts-logic.tld" prefix="logic"%>
<%@ taglib uri="/WEB-INF/struts-tld/struts-bean.tld" prefix="bean" %>
<%@page import="java.util.ArrayList" %>
<response>
     <logic:iterate id="map" name="optionMap">
         <option>
            <optionvalue><bean:write name="map" property="key"/></optionvalue>
            <optionlabel><bean:write name="map" property="value"/></optionlabel>
         </option>
    </logic:iterate>
</response>

所以你可以看到dropdown的值是该Employee的id(HashMap的键),而label是他/她的名字(HashMap的值)。

到目前为止一切正常,但现在要求在下一个表格单元格<html:select property="employeeId" styleId="employeeId" styleClass="combo" onchange="displayEmployeeName(this.value)"> <html:option value=""><bean:message key="knowledgepro.admin.select"/></html:option> <logic:notEmpty name="hlAdmissionForm" property="employees"> <html:optionsCollection property="employees" label="value" value="key"/> </logic:notEmpty> </html:select> 中显示所选的员工姓名。

你可以在员工下拉代码中看到我正在调用JS函数

<td>

但是因为我在Employee下拉的onchange事件中传递了function displayEmployeeName(employeeName) { document.getElementById("studentName").innerHTML = employeeName; } 而不是员工名称显示了员工ID。那么任何人都可以告诉我如何在onchange事件中获得this.value的值。

2 个答案:

答案 0 :(得分:1)

您可以使用this.value获取employeeId,然后在您的函数中使用您的员工HashMap询问名称

function displayEmployeeName(empId) {
    document.getElementById("studentName").innerHTML = myMap[empId];
}

如果您没有全球可用的地图,请查看this answer

this.value返回你的id的原因是因为你的map是“Integer,String”,这意味着map中的值是employeeName,键是employeeId。但是,在select onChange事件中,您正在考虑select-element中的值,该值已分配了Employee的id。

答案 1 :(得分:0)

我刚刚将JS功能改为此,我得到了答案。

function displayEmployeeName(empId) {
      jQuery("#employeeId").find("option[value='" + jQuery("#employeeId").val() + "']").text()
}

感谢您的回复,对不起,我以错误的方式描述了这个问题,这就是我应该问的问题。

How to get the selected label from a html ?