2014-11-25 6 views
0

자바 스크립트에서 새로 생겼습니다. 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> 

및 자바 스크립트 함수 : 나는 3 JSP 페이지에서 선택을

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

를 해결했다. 컨텍스트 ("this")를 전달하면 선택한 항목에 대한 정보를 가져 와서 하나의 changeXXXCombo() 함수에서 처리 할 수 ​​있습니다. 나는 잠시 동안 js로 아무 것도하지 않았으므로 다른 언어와 혼동 할 수는 있지만 그렇게 할 수 있다고 생각합니다. – DerStrom8

+0

또한 콤보 박스를 값으로 생성해야합니다. 그리고 값 목록을 전달하는 방법을 이해하지 못합니다. 예를 들어, 회사는 $ {railwayService.companies}, Department - $ {company.departments}의 값을 얻습니다. –

답변