在我的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
的值。
答案 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()
}
感谢您的回复,对不起,我以错误的方式描述了这个问题,这就是我应该问的问题。