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ステートメントをこれに変更するだけです

<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 に答える