2014-11-25 157 views
0

我是JavaScript新用戶。我有JSP頁面上選擇3:對於onChange()事件ComboBox onChange事件

<select id="railwayServiceList" name="railwayService_id" 
    onchange="changeCompaniesCombo()"></select> 
<select id="companyList" name="company_id" 
    onchange="changeCompaniesCombo()"></select> 
<select id="departmentList" name="department_id"></select> 

和JavaScript功能:

function changeCompaniesCombo() { 

    var railwayServiceList = document.getElementById("railwayServiceList"); 
    var companyList = document.getElementById("companyList"); 
    var selected = railwayServiceList.value; 
    while (companyList.options.length) { 
     companyList.remove(0); 
    } 
    <c:forEach items="${companies}" var="company" varStatus="loopStatus"> 
     if ("${company.railwayService}" == selected) { 
      var option = new Option("${company.name}", "${company}"); 
      companyList.options.add(option); 
     } 
    </c:forEach> 
} 

function changeDepartmentCombo() { 
    var departmentList = document.getElementById("departmentList"); 
    var companyList = document.getElementById("companyList"); 
    var selected = companyList.value; 

    while (departmentList.options.length) { 
     departmentList.remove(0); 
    } 
    <c:forEach items="${selected.departments}" var="department" varStatus="loopStatus"> 
     var option = new Option("${department.name}", "${department.id}"); 
     companyList.options.add(option); 
    </c:forEach> 
} 

它工作正常,但也許有一些方法來創建所有選擇一個共同的功能? (我有8個選擇)。數據模型由Spring MVC控制器生成。

+0

我相信你可以傳遞參數到您指定的onchange事件的函數。如果你傳遞上下文(「this」),你可以獲得關於選擇哪一個的信息,並在一個changeXXXCombo()函數中處理它。我有一段時間沒有用js做任何事情,所以我可能會將它與另一種語言混淆,但我認爲你可以這樣做 – DerStrom8 2014-11-25 17:22:55

+0

我還需要生成帶有值的組合框。我不明白如何傳遞值的列表。例如,公司組合可以從$ {railwayService.companies},Department中獲取值 - 從$ {company.departments} – 2014-11-25 18:10:56

回答