2014-04-17 4 views
0

다음 문제에 대한 해결책을 찾는 데 몇 가지 문제가 있습니다.XSL xpath 값을 찾으려면 JQuery를 사용하십시오.

다음 코드는 xpath @label 속성을 기반으로 드롭 다운 메뉴를 만듭니다.

드롭 다운 메뉴에서 선택한 고유 레이블을 기반으로 등록 유형을 동적으로 찾고 싶습니다. 아래는 XML입니다.

<yearList> 
     <yearList olr_yearID="1" endYear="2012" label="11-12" active="false" registrationType=""/> 
     <yearList olr_yearID="2" endYear="2013" label="12-13" active="false" registrationType="Immediate"/> 
     <yearList olr_yearID="10" endYear="2015" label="14-15 Summer Academy" active="true" registrationType="Summer Academy"/> 
     <yearList olr_yearID="13" endYear="2014" label="13-14 Summer Academy" active="true" registrationType="Summer Academy"/> 
    </yearList> 

이 값을 숨겨진 입력으로 전달하고 싶습니다.

FYI ... endYear가 항상 구분되는 것은 아닙니다. 즉, endYear 당 여러 registrationType이 있습니다.

감사합니다.

답변

0

내 원래의 질문에 솔루션을 작업입니다 : 머리에서

넣어 :

var yearList = []; 
<xsl:for-each select="/campusRoot/yearList/yearList"> 
    yearList['<xsl:value-of select="@olr_yearID"/>'] = {registrationType: '<xsl:value-of select="@registrationType"/>', endYear: '<xsl:value-of select="@endYear"/>'} 
</xsl:for-each> 

$(document).ready(function(){ 
    $(window).load(function(){ 
    registration(); 

    $('#reglabel').change(function() { 
     registration(); 
    }); 

    function registration() { 
     var result = yearList[$('#reglabel').val()].registrationType; 
     var result2 = yearList[$('#reglabel').val()].endYear; 
     document.getElementById('registrationType').value = result; 
     document.getElementById('endYear').value = result2; 
    } 
    }); 

본문에 넣어 :

<select name="reglabel" id="reglabel" class="reglabel" > 
    <xsl:for-each select="/campusRoot/yearList/yearList"> 
    <option value="{@olr_yearID}"> 
     <xsl:value-of select="@label"/> 
    </option> 
    </xsl:for-each> 
</select> 

참고 : olr_yearID는 올바른 특성을 찾는 데 필요합니다. 이 답변을 구현하려면 JQuery 라이브러리를 가져와야합니다. document.getElementById는 다른 매개 변수와 함께 제출되는 숨겨진 입력을 나타냅니다.

또한 XML을 동적으로 생성하는 AJAX를 사용하여이 작업을 수행하는 또 다른 방법이 있지만 다른 용도로 XML을로드해야하므로 구현하는 데 가장 효율적인 솔루션 일 것입니다.

앞으로 도움이되기를 바랍니다.

1

내가 같은 일을 고려할 것입니다 :

<select name="endYear" id="endYear" class="validate[required]"> 
    <xsl:for-each select="/campusRoot/yearList/yearList"> 
    <option value="{@endYear}" data-id="{@olr_yearID}" data-active="{@active}" data-type="{@registrationType}"> 
     <xsl:value-of select="@label"/> 
    </option> 
    </xsl:for-each> 
</select> 

을하고 일 :

여기
$('#endYear').change(function() { 
    alert($(this).find(':selected').attr('data-type')); 
}); 
+0

이것은 나를 위해 작동하지 않았다. 경고는 빈 문자열을 인쇄합니다. – scot0308

+0

어웨이 : $ ('# endYear'). 변경 (function() { alert (this.value); }}); –

관련 문제