0

最初のパネルで jquery を使用して正常に動作する次のドロップダウンがありますが、同じパネルが複数回生成される可能性があり、後続のページでは jQuery が他のボックスを表示するために機能しません。

たとえば、コード panel22_0 ...panel22_1 などに表示されます。

私は今困惑しています。どんな助けでも大歓迎です。

panel22_

<xsl:for-each select="bankguarantees/bankguaranteedata">
    <div id="panel22" class="panels">
    <xsl:attribute name="id">panel22_<xsl:value-of select="@id"/></xsl:attribute>
  <table border="1" width="100%" height="100%"  bgcolor="#CECFFF" style="border-top: none" cellspacing="10">    
<tr>
<td>
<table border="0" width="100%" height="100%" bgcolor="lightyellow" class="inline">
<tr>
<td colspan="3" class="Header" height="1"></td>
</tr>
   <tr name="contliab" id="contliab">
        <script type="text/javascript">
         $('#producttypes').change(function()
         {
           if($('#otherprodtype').is(':selected'))
           {
           $('#otherprodtypebox').show();
           }
         else
          {
           if($('#otherprodtypebox').is(':visible'))
           {
             $('#otherprodtypebox').hide();
           }
          }
         });;
        </script>
        <td class="Label">Product Type</td>
        <td class="field">
         <select name="producttypes" id="producttypes">
          <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="otherprodtype" id="otherprodtype">
           <xsl:if test="producttypes/option[@id='otherprodtype']='selected'">
            <xsl:attribute name="selected"/>
           </xsl:if>Other</option>
         </select>
         <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>
       </tr>
4

1 に答える 1

1

すべての ID を html で 1 回だけ使用する必要があります。代わりにクラスを使用してください:

$('.producttypes').change(function()
     {
       $this = $(this);
       if($this.children('.otherprodtype').is(':selected'))
       {
       $this.sliblings('.otherprodtypebox').show();
       }
     else
      {
       if($this.sliblings('.otherprodtypebox').is(':visible'))
       {
         $this.sliblings('.otherprodtypebox').hide();
       }
      }
     });;

もちろん、id producttypes を持つ要素に producttypes クラスを追加する必要があります。id otherprodtype を持つ要素に otherprodtype クラスを追加する必要があります。ID を破棄して、繰り返さないようにすることもできます。

于 2013-01-10T14:55:00.280 に答える