0

我有以下根据用户选择产品而创建的 xsl 面板。用户最多可以选择 99 个,并且将生成 99 个以下代码的精确面板。当从下拉列表中选择“其他”时,我有 jQuery 代码来操作(显示/隐藏)输入字段。

基本上我试图在我的javascript中获取xsl id,这样我就可以将代码应用到我的id,这将相应地增加。

非常感谢任何帮助。这些错误与 javacript 中的非法参数有关。

<xsl:attribute name="id">panel22_<xsl:value-of select="@id"/></xsl:attribute>

<table border="0" width="100%" height="100%" bgcolor="lightyellow" class="inline"
<script type="text/javascript">
var one = document.getElementById('<xsl:value-of select="@id"/>')
$('#producttypes' + '_' + one).change(function()
{
    if($('#otherprodtype').is(':selected'))
    {
    $('#myotherbox').show();
    }
    else
    {
    if($('#myotherbox').is(':visible'))
    {
    $('#myotherbox').hide();
    }
}
});;
 </script>

<tr>
<td class="Label">Product Type</td>
<td class="field">
    <select name="producttypes" id="producttypes_<xsl:value-of select="@id"/>">
        <option value="domguar">
            <xsl:if test="producttypes/option[@id='domguar']='selected'">
                <xsl:attribute name="selected"/>
            </xsl:if>Domestic Guarantee</option>
        <option value="indemnity">
            <xsl:if test="producttypes/option[@id='indemnity']='selected'">
                <xsl:attribute name="selected"/>
            </xsl:if>Indemnity</option>
        <option value="domcontbond">
            <xsl:if test="producttypes/option[@id='domcontbond']='selected'">
                <xsl:attribute name="selected"/>
            </xsl:if>Domestic Contract Bond</option>
        <option value="perfbond">
            <xsl:if test="producttypes/option[@id='perfbond']='selected'">
                <xsl:attribute name="selected"/>
            </xsl:if>Performance Bond</option>
        <option value="interventionguar">
            <xsl:if test="producttypes/option[@id='interventionguar']='selected'">
                <xsl:attribute name="selected"/>
            </xsl:if>Intervention Guarantee</option>
        <option value="customsguar">
            <xsl:if test="producttypes/option[@id='customsguar']='selected'">
                <xsl:attribute name="selected"/>
        </xsl:if>Customs Guarantee</option>
        <option value="vatbond">
            <xsl:if test="producttypes/option[@id='vatbond']='selected'">
                <xsl:attribute name="selected"/>
            </xsl:if>VAT Bond</option>
        <option value="otherprodtype" id="otherprodtype_<xsl:value-of select="@id"/>">
            <xsl:if test="producttypes/option[@id='otherprodtype']='selected'">
                <xsl:attribute name="selected"/>
            </xsl:if>Other</option>
    </select>
    <td class="field" id="myotherbox_<xsl:value-of select="@id"/>" style="display:none;">
    <input class="amdInputText" type="text" id="otherprodtypebox" value="" style="display:none;">
          <xsl:attribute name="value"><xsl:value-of select="otherprodtypebox"></xsl:value-of></xsl:attribute></input>
    </td>
</td>
</tr>
4

2 回答 2

1

我认为您在以下行中遇到了问题

<select name="producttypes" id="producttypes_<xsl:value-of select="@id"/>">

并且也在相关的表格单元格中

<td class="field" id="myotherbox_<xsl:value-of select="@id"/>" style="display:none;">

这显然不是有效的 XSLT 语法。但是不要惊慌,有一种直接的方法可以做到这一点,那就是使用属性值模板。只需将您的选择语句更改为此

<select name="producttypes" id="producttypes_{@id}">

花括号表示这是一个要计算的表达式,而不是字面输出。希望它应该像这样输出(例如,假设 @id 设置为 123)

<select name="producttypes" id="producttypes_123">

您将以类似的方式修改表格单元格。

于 2013-01-11T12:08:58.073 回答
0

下面的函数结合了递增 id 和 onchange 按钮。感谢帮助

<script type="text/javascript">
function myOtherBox(e, id) {
if (e.value == 'otherprodtype')
{
    $('#myBox_' + id).toggle();
}
}

于 2013-01-11T12:51:50.507 回答