2017-01-03 55 views
0

在我的JSP中我有一個下拉列表列出所有可用的部門,當客戶端選擇一個部門時,由AJAX我將下一個下拉列表中的所有員工下。在onchange事件中在div標籤中顯示映射值

對於我使用的是HahMap<Integer, String>,我的響應文件AJAX目的是

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

我的員工下拉代碼

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

所以你可以看到下拉的這個值是id (HashMap的鍵),標籤是他/她的名字(HashMap的值)。

到目前爲止,所有工作都正常,但現在需要在下一個表格單元格<td>中顯示選定的員工姓名。

您可以在員工代碼中看到下拉我稱爲JS功能是

function displayEmployeeName(employeeName) { 
    document.getElementById("studentName").innerHTML = employeeName; 
} 

但因爲我傳遞this.value在員工的onchange事件下降,而不是員工姓名的員工下來ID顯示。那麼任何人都可以告訴我如何在onchange事件中獲得HashMap的價值。

回答

1

您可以使用this.value得到僱員,然後用你的員工的HashMap在功能

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

問姓名如果你沒有自己的地圖全球可用做什麼,看看this answer

this.value返回您的ID的原因是因爲您的地圖是「整數,字符串」,這意味着地圖中的值是employeeName,鍵是employeeId。但是,在您選擇的onChange事件中,您正在接受select-element中的值,該值指定了Employee的id。

+0

謝謝**約翰**鏈接真的幫助。 –

0

我只是改變了我的JS功能,我能夠得到答案。

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

感謝您的回覆,我很抱歉我以錯誤的方式描述了這個問題,這是我應該問的。

How to get the selected label from a html ?