我遇到了一些解决以下问题的问题。
以下代码根据xpath @label属性创建一个下拉菜单。
<select name="endYear" id="endYear" class="validate[required]">
<xsl:for-each select="/campusRoot/yearList/yearList">
<option value="{@endYear}">
<xsl:value-of select="@label"/>
</option>
</xsl:for-each>
</select>
我想根据下拉菜单中选择的不同标签动态查找注册类型?以下是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>
然后我想将此值作为隐藏输入传递。
仅供参考...结束时并不总是截然不同;即每个endYear有多个registrationTypes。
谢谢你的期待。
答案 0 :(得分: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'));
});
答案 1 :(得分: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是distinct,它是查找正确属性所必需的。要实现此答案,您必须导入JQuery库。 document.getElementById指的是与其他参数一起提交的隐藏输入。
此外,还有另一种方法可以使用AJAX来动态生成XML,但由于我已经需要为其他目的加载XML,这可能是我实现的最有效的解决方案。
希望这可以帮助将来的某个人。