2017-08-22 9 views
0

こんにちは皆、Jqueryについてはかなり新しいです。& javascript &私は以前の開発者から残されたコードで作業しています。各ドロップダウンメニューに表示される値は、それに依存する値と、各オプションに表示する正しい値のみに依存する必要があります。私は周りを見回し、このように2段階のドロップダウンに関する情報を見つけましたが、それ以降は余分な段階を追加することはありません。Jqueryを使用した3レベル依存ドロップダウンメニュー

$(function(){ 
 
    var $cat = $("#category1"), 
 
     $subcat = $("#category2"), 
 
     $volt = $("#category3"); 
 

 
     $cat.on("change",function(){ 
 
     var _rel = $(this).val(); 
 
     $subcat.find("option").attr("style",""); 
 
     $subcat.val(""); 
 
     if(!_rel) return $subcat.prop("disabled",true); 
 
     $subcat.find("[rel="+_rel+"]").show(); 
 
     $subcat.prop("disabled",false); 
 
     }); 
 

 
     $subcat.on("change",function(){ 
 
     var _rel = $(this).val(); 
 
     $volt.find("option").attr("style",""); 
 
     $volt.val(""); 
 
     if(!_rel) return $volt.prop("disabled",true); 
 
     $volt.find("[rel="+_rel+_rel+"]").show(); 
 
     $volt.prop("disabled",false); 
 
     }); 
 

 
});
#category2 option{ 
 
     display:none; 
 
    } 
 
    
 
    #category2 option.label{ 
 
     display:block; 
 
    } 
 
    
 
    #category3 option{ 
 
     display:none; 
 
    } 
 
    
 
    #category3 option.label{ 
 
     display:block; 
 
    }
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script> 
 

 
    <form id="formname" name="formname" method="post" action="submitform.asp" > 
 
     <table width="50%" border="0" cellspacing="0" cellpadding="5"> 
 
      <tr> 
 
       <td width="41%" align="right" valign="middle">First Dropdown Menu:</td> 
 
       <td width="59%" align="left" valign="middle"> 
 
        <select name="category1" id="category1"> 
 
         <option value="">Please Select</option> 
 
         <option value="Option1">ONE</option> 
 
         <option value="Option2">TWO</option> 
 
         <option value="Option3">THREE</option> 
 
         <option value="Option4">FOUR</option> 
 
        </select> 
 
       </td> 
 
      </tr> 
 
    <form id="formname1" name="formname1" method="post" action="submitform.asp" > 
 
      <tr> 
 
       <td align="right" valign="middle">Second Dropdown Menu:</td> 
 
       <td align="left" valign="middle"> 
 
        <select disabled="disabled" id="category2" name="category2"> 
 
         <option class="label" value>Please Select</option> 
 
    <!-- R --> 
 
         <option rel="Option1" value="R12">12</option> 
 
         <option rel="Option1" value="R24">24</option> 
 
         <option rel="Option1" value="R36">36</option> 
 
         <option rel="Option1" value="R48">48</option> 
 
         <option rel="Option1" value="R80">80</option> 
 
    <!-- H --> 
 
         <option rel="Option2" value="H12">12</option> 
 
         <option rel="Option2" value="H24">24</option> 
 
         <option rel="Option2" value="H36">36</option> 
 
         <option rel="Option2" value="H48">48</option> 
 
         <option rel="Option2" value="H80">80</option> 
 
    <!-- L --> 
 
         <option rel="Option3" value="L12">12</option> 
 
         <option rel="Option3" value="L24">24</option> 
 
         <option rel="Option3" value="L36">36</option> 
 
         <option rel="Option3" value="L48">48</option> 
 
         <option rel="Option3" value="L80">80</option> 
 
    <!-- B --> 
 
         <option rel="Option4" value="B12">12</option> 
 
         <option rel="Option4" value="B24">24</option> 
 
         <option rel="Option4" value="B36">36</option> 
 
         <option rel="Option4" value="B48">48</option> 
 
         <option rel="Option4" value="B80">80</option> 
 
        </select> 
 
       </td> 
 
      </tr> 
 
    <form id="formname2" name="formname2" method="post" action="submitform.asp" > 
 
      <tr> 
 
       <td align="right" valign="middle">Third Dropdown Menu</td> 
 
       <td align="left" valign="middle"> 
 
        <select disabled="disabled" id="category3" name="category3"> 
 
    <option class="label" value>Please Select</option> 
 
    <!-- R --> 
 
         <option rel="R12" value="12v1">R12V1</option> 
 
         <option rel="R24" value="R24v1">R24V1</option> 
 
         <option rel="R36" value="R36v1">R36V1</option> 
 
         <option rel="R48" value="R48v1">R48V1</option> 
 
         <option rel="R80" value="R80v1">R80V1</option> 
 
    <!-- H --> 
 
         <option rel="H12" value="H12v1">H12V1</option> 
 
         <option rel="H24" value="H24v1">H24V1</option> 
 
         <option rel="H36" value="H36v1">H36V1</option> 
 
         <option rel="H48" value="H48v1">H48V1</option> 
 
         <option rel="H80" value="H80v1">H80V1</option> 
 
    <!-- L --> 
 
         <option rel="L12" value="L12v1">L12V1</option> 
 
         <option rel="L24" value="L24v1">L24V1</option> 
 
         <option rel="L36" value="L36v1">L36V1</option> 
 
         <option rel="L48" value="L48v1">L48V1</option> 
 
         <option rel="L80" value="L80v1">L80V1</option> 
 
    <!-- B --> 
 
         <option rel="B12" value="B12v1">B12V1</option> 
 
         <option rel="B24" value="B24v1">B24V1</option> 
 
         <option rel="B36" value="B36v1">B36V1</option> 
 
         <option rel="B48" value="B48v1">B48V1</option> 
 
         <option rel="B80" value="B80v1">B80V1</option> 
 
        </select> 
 
       </td> 
 
      </tr> 
 
     </table> 
 
    </form> 
 
    </html>

私は第二メニューが正しく動作するために得ることができますが、3番目のメニューは常にちょうどすべてを示し、またはまったく動作しない:ここで私は以下の持っているコードです。 2番目のメニューの値に依存するようにはできません。誰もこれを解決する方法を知っていますか?どんな助けでも大歓迎です。

答えて

0

あなたは、問題は、あなたが
$volt.find("[rel="+_rel+_rel+"]").show();で二回_relを指定しているということである

$volt.find("[rel="+_rel+"]").show(); 

$(function(){ 
 
    
 
     var $cat = $("#category1"), 
 
      $subcat = $("#category2"), 
 
      $volt = $("#category3"); 
 

 
      $cat.on("change",function(){ 
 
      var _rel = $(this).val(); 
 
      $subcat.find("option").attr("style",""); 
 
      $subcat.val(""); 
 
      if(!_rel) return $subcat.prop("disabled",true); 
 
      $subcat.find("[rel="+_rel+"]").show(); 
 
      $subcat.prop("disabled",false); 
 
      }); 
 

 
      $subcat.on("change",function(){ 
 
      debugger; 
 
      var _rel = $(this).val(); 
 
      $volt.find("option").attr("style",""); 
 
      $volt.val(""); 
 
      if(!_rel) return $volt.prop("disabled",true); 
 
      $volt.find("[rel="+_rel+"]").show(); 
 
      $volt.prop("disabled",false); 
 
      }); 
 
    
 
    });
#category2 option{ 
 
     display:none; 
 
    } 
 
    
 
    #category2 option.label{ 
 
     display:block; 
 
    } 
 
    
 
    #category3 option{ 
 
     display:none; 
 
    } 
 
    
 
    #category3 option.label{ 
 
     display:block; 
 
    }
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script> 
 
    <form id="formname" name="formname" method="post" action="submitform.asp" > 
 
     <table width="50%" border="0" cellspacing="0" cellpadding="5"> 
 
      <tr> 
 
       <td width="41%" align="right" valign="middle">First Dropdown Menu:</td> 
 
       <td width="59%" align="left" valign="middle"> 
 
        <select name="category1" id="category1"> 
 
         <option value="">Please Select</option> 
 
         <option value="Option1">ONE</option> 
 
         <option value="Option2">TWO</option> 
 
         <option value="Option3">THREE</option> 
 
         <option value="Option4">FOUR</option> 
 
        </select> 
 
       </td> 
 
      </tr> 
 
    <form id="formname1" name="formname1" method="post" action="submitform.asp" > 
 
      <tr> 
 
       <td align="right" valign="middle">Second Dropdown Menu:</td> 
 
       <td align="left" valign="middle"> 
 
        <select disabled="disabled" id="category2" name="category2"> 
 
         <option class="label" value>Please Select</option> 
 
    <!-- R --> 
 
         <option rel="Option1" value="R12">12</option> 
 
         <option rel="Option1" value="R24">24</option> 
 
         <option rel="Option1" value="R36">36</option> 
 
         <option rel="Option1" value="R48">48</option> 
 
         <option rel="Option1" value="R80">80</option> 
 
    <!-- H --> 
 
         <option rel="Option2" value="H12">12</option> 
 
         <option rel="Option2" value="H24">24</option> 
 
         <option rel="Option2" value="H36">36</option> 
 
         <option rel="Option2" value="H48">48</option> 
 
         <option rel="Option2" value="H80">80</option> 
 
    <!-- L --> 
 
         <option rel="Option3" value="L12">12</option> 
 
         <option rel="Option3" value="L24">24</option> 
 
         <option rel="Option3" value="L36">36</option> 
 
         <option rel="Option3" value="L48">48</option> 
 
         <option rel="Option3" value="L80">80</option> 
 
    <!-- B --> 
 
         <option rel="Option4" value="B12">12</option> 
 
         <option rel="Option4" value="B24">24</option> 
 
         <option rel="Option4" value="B36">36</option> 
 
         <option rel="Option4" value="B48">48</option> 
 
         <option rel="Option4" value="B80">80</option> 
 
        </select> 
 
       </td> 
 
      </tr> 
 
    <form id="formname2" name="formname2" method="post" action="submitform.asp" > 
 
      <tr> 
 
       <td align="right" valign="middle">Third Dropdown Menu</td> 
 
       <td align="left" valign="middle"> 
 
        <select disabled="disabled" id="category3" name="category3"> 
 
    <option class="label" value>Please Select</option> 
 
    <!-- R --> 
 
         <option rel="R12" value="12v1">R12V1</option> 
 
         <option rel="R24" value="R24v1">R24V1</option> 
 
         <option rel="R36" value="R36v1">R36V1</option> 
 
         <option rel="R48" value="R48v1">R48V1</option> 
 
         <option rel="R80" value="R80v1">R80V1</option> 
 
    <!-- H --> 
 
         <option rel="H12" value="H12v1">H12V1</option> 
 
         <option rel="H24" value="H24v1">H24V1</option> 
 
         <option rel="H36" value="H36v1">H36V1</option> 
 
         <option rel="H48" value="H48v1">H48V1</option> 
 
         <option rel="H80" value="H80v1">H80V1</option> 
 
    <!-- L --> 
 
         <option rel="L12" value="L12v1">L12V1</option> 
 
         <option rel="L24" value="L24v1">L24V1</option> 
 
         <option rel="L36" value="L36v1">L36V1</option> 
 
         <option rel="L48" value="L48v1">L48V1</option> 
 
         <option rel="L80" value="L80v1">L80V1</option> 
 
    <!-- B --> 
 
         <option rel="B12" value="B12v1">B12V1</option> 
 
         <option rel="B24" value="B24v1">B24V1</option> 
 
         <option rel="B36" value="B36v1">B36V1</option> 
 
         <option rel="B48" value="B48v1">B48V1</option> 
 
         <option rel="B80" value="B80v1">B80V1</option> 
 
        </select> 
 
       </td> 
 
      </tr> 
 
     </table> 
 
    </form>

+0

にあなたのアドバイスは音ようだが、でも、その変更を実施した後、私はまだ同じを取得します3番目のドロップダウンが2番目のドロップダウンに依存しないという結果になります(ただし、私は 'run code snippet'をクリックするとここでうんざりする理由があります)。それが働くのをやめるために間違っていることが他にありますか? – Rob

+0

「第2に依存しない」というより多くの情報を提供する必要があります。あなたが選んだものと、あなたが得るものと何を得ることが予想されますか? – Dekel

+0

現在、私は現在、2番目のドロップダウンメニューで選択されているすべてのオプションが3番目のドロップダウンにあるすべてのオプションを表示していることを確認しています。私が欲しいのは、2番目のドロップダウン(例:)で何かを選択し、3番目のオプションだけに関連する関連する結果を得ることです。私はex:)を見たいだけです。まだ何らかの理由で私はすべてを得ています... – Rob

0

$volt.find("[rel="+_rel+_rel+"]").show(); 

を変更する必要がありました。これらのいずれかを削除するだけです。

私はまた、次の例のように、_rel2に2つ目の変数名を変更することをお勧めしたい:

#category2 option{ 
 
     display:none; 
 
    } 
 
    
 
    #category2 option.label{ 
 
     display:block; 
 
    } 
 
    
 
    #category3 option{ 
 
     display:none; 
 
    } 
 
    
 
    #category3 option.label{ 
 
     display:block; 
 
    }
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script> 
 
    <script> 
 
    $(function(){ 
 
    
 
     var $cat = $("#category1"), 
 
      $subcat = $("#category2"), 
 
      $volt = $("#category3"); 
 

 
      $cat.on("change",function(){ 
 
      var _rel = $(this).val(); 
 
      $subcat.find("option").attr("style",""); 
 
      $subcat.val(""); 
 
      if(!_rel) return $subcat.prop("disabled",true); 
 
      $subcat.find("[rel="+_rel+"]").show(); 
 
      $subcat.prop("disabled",false); 
 
      }); 
 

 
      $subcat.on("change",function(){ 
 
      var _rel2 = $(this).val(); 
 
      $volt.find("option").attr("style",""); 
 
      $volt.val(""); 
 
      if(!_rel2) return $volt.prop("disabled",true); 
 
      $volt.find("[rel="+_rel2+"]").show(); 
 
      $volt.prop("disabled",false); 
 
      }); 
 
    
 
    }); 
 
    </script> 
 
    <form id="formname" name="formname" method="post" action="submitform.asp" > 
 
     <table width="50%" border="0" cellspacing="0" cellpadding="5"> 
 
      <tr> 
 
       <td width="41%" align="right" valign="middle">First Dropdown Menu:</td> 
 
       <td width="59%" align="left" valign="middle"> 
 
        <select name="category1" id="category1"> 
 
         <option value="">Please Select</option> 
 
         <option value="Option1">ONE</option> 
 
         <option value="Option2">TWO</option> 
 
         <option value="Option3">THREE</option> 
 
         <option value="Option4">FOUR</option> 
 
        </select> 
 
       </td> 
 
      </tr> 
 
    <form id="formname1" name="formname1" method="post" action="submitform.asp" > 
 
      <tr> 
 
       <td align="right" valign="middle">Second Dropdown Menu:</td> 
 
       <td align="left" valign="middle"> 
 
        <select disabled="disabled" id="category2" name="category2"> 
 
         <option class="label" value>Please Select</option> 
 
    <!-- R --> 
 
         <option rel="Option1" value="R12">12</option> 
 
         <option rel="Option1" value="R24">24</option> 
 
         <option rel="Option1" value="R36">36</option> 
 
         <option rel="Option1" value="R48">48</option> 
 
         <option rel="Option1" value="R80">80</option> 
 
    <!-- H --> 
 
         <option rel="Option2" value="H12">12</option> 
 
         <option rel="Option2" value="H24">24</option> 
 
         <option rel="Option2" value="H36">36</option> 
 
         <option rel="Option2" value="H48">48</option> 
 
         <option rel="Option2" value="H80">80</option> 
 
    <!-- L --> 
 
         <option rel="Option3" value="L12">12</option> 
 
         <option rel="Option3" value="L24">24</option> 
 
         <option rel="Option3" value="L36">36</option> 
 
         <option rel="Option3" value="L48">48</option> 
 
         <option rel="Option3" value="L80">80</option> 
 
    <!-- B --> 
 
         <option rel="Option4" value="B12">12</option> 
 
         <option rel="Option4" value="B24">24</option> 
 
         <option rel="Option4" value="B36">36</option> 
 
         <option rel="Option4" value="B48">48</option> 
 
         <option rel="Option4" value="B80">80</option> 
 
        </select> 
 
       </td> 
 
      </tr> 
 
    <form id="formname2" name="formname2" method="post" action="submitform.asp" > 
 
      <tr> 
 
       <td align="right" valign="middle">Third Dropdown Menu</td> 
 
       <td align="left" valign="middle"> 
 
        <select disabled="disabled" id="category3" name="category3"> 
 
    <option class="label" value>Please Select</option> 
 
    <!-- R --> 
 
         <option rel="R12" value="12v1">R12V1</option> 
 
         <option rel="R24" value="R24v1">R24V1</option> 
 
         <option rel="R36" value="R36v1">R36V1</option> 
 
         <option rel="R48" value="R48v1">R48V1</option> 
 
         <option rel="R80" value="R80v1">R80V1</option> 
 
    <!-- H --> 
 
         <option rel="H12" value="H12v1">H12V1</option> 
 
         <option rel="H24" value="H24v1">H24V1</option> 
 
         <option rel="H36" value="H36v1">H36V1</option> 
 
         <option rel="H48" value="H48v1">H48V1</option> 
 
         <option rel="H80" value="H80v1">H80V1</option> 
 
    <!-- L --> 
 
         <option rel="L12" value="L12v1">L12V1</option> 
 
         <option rel="L24" value="L24v1">L24V1</option> 
 
         <option rel="L36" value="L36v1">L36V1</option> 
 
         <option rel="L48" value="L48v1">L48V1</option> 
 
         <option rel="L80" value="L80v1">L80V1</option> 
 
    <!-- B --> 
 
         <option rel="B12" value="B12v1">B12V1</option> 
 
         <option rel="B24" value="B24v1">B24V1</option> 
 
         <option rel="B36" value="B36v1">B36V1</option> 
 
         <option rel="B48" value="B48v1">B48V1</option> 
 
         <option rel="B80" value="B80v1">B80V1</option> 
 
        </select> 
 
       </td> 
 
      </tr> 
 
     </table> 
 
    </form> 
 
    </html>

は、この情報がお役に立てば幸い! :)

0

コードはほぼ完璧です。あなたはこのラインを調整する必要があります。

$volt.find("[rel="+_rel+"]").show(); 

正しい値を取得するためにshow()

$(function(){ 
 
    
 
     var $cat = $("#category1"), 
 
      $subcat = $("#category2"), 
 
      $volt = $("#category3"); 
 

 
      $cat.on("change",function(){ 
 
      var _rel = $(this).val(); 
 
      $subcat.find("option").attr("style",""); 
 
      $subcat.val(""); 
 
      if(!_rel) return $subcat.prop("disabled",true); 
 
      $subcat.find("[rel="+_rel+"]").show(); 
 
      $subcat.prop("disabled",false); 
 
      }); 
 

 
      $subcat.on("change",function(){ 
 
      debugger; 
 
      var _rel = $(this).val(); 
 
      $volt.find("option").attr("style",""); 
 
      $volt.val(""); 
 
      if(!_rel) return $volt.prop("disabled",true); 
 
      $volt.find("[rel="+_rel+"]").show(); 
 
      $volt.prop("disabled",false); 
 
      }); 
 
    
 
    });
#category2 option{ 
 
     display:none; 
 
    } 
 
    
 
    #category2 option.label{ 
 
     display:block; 
 
    } 
 
    
 
    #category3 option{ 
 
     display:none; 
 
    } 
 
    
 
    #category3 option.label{ 
 
     display:block; 
 
    }
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script> 
 
    <form id="formname" name="formname" method="post" action="submitform.asp" > 
 
     <table width="50%" border="0" cellspacing="0" cellpadding="5"> 
 
      <tr> 
 
       <td width="41%" align="right" valign="middle">First Dropdown Menu:</td> 
 
       <td width="59%" align="left" valign="middle"> 
 
        <select name="category1" id="category1"> 
 
         <option value="">Please Select</option> 
 
         <option value="Option1">ONE</option> 
 
         <option value="Option2">TWO</option> 
 
         <option value="Option3">THREE</option> 
 
         <option value="Option4">FOUR</option> 
 
        </select> 
 
       </td> 
 
      </tr> 
 
    <form id="formname1" name="formname1" method="post" action="submitform.asp" > 
 
      <tr> 
 
       <td align="right" valign="middle">Second Dropdown Menu:</td> 
 
       <td align="left" valign="middle"> 
 
        <select disabled="disabled" id="category2" name="category2"> 
 
         <option class="label" value>Please Select</option> 
 
    <!-- R --> 
 
         <option rel="Option1" value="R12">12</option> 
 
         <option rel="Option1" value="R24">24</option> 
 
         <option rel="Option1" value="R36">36</option> 
 
         <option rel="Option1" value="R48">48</option> 
 
         <option rel="Option1" value="R80">80</option> 
 
    <!-- H --> 
 
         <option rel="Option2" value="H12">12</option> 
 
         <option rel="Option2" value="H24">24</option> 
 
         <option rel="Option2" value="H36">36</option> 
 
         <option rel="Option2" value="H48">48</option> 
 
         <option rel="Option2" value="H80">80</option> 
 
    <!-- L --> 
 
         <option rel="Option3" value="L12">12</option> 
 
         <option rel="Option3" value="L24">24</option> 
 
         <option rel="Option3" value="L36">36</option> 
 
         <option rel="Option3" value="L48">48</option> 
 
         <option rel="Option3" value="L80">80</option> 
 
    <!-- B --> 
 
         <option rel="Option4" value="B12">12</option> 
 
         <option rel="Option4" value="B24">24</option> 
 
         <option rel="Option4" value="B36">36</option> 
 
         <option rel="Option4" value="B48">48</option> 
 
         <option rel="Option4" value="B80">80</option> 
 
        </select> 
 
       </td> 
 
      </tr> 
 
    <form id="formname2" name="formname2" method="post" action="submitform.asp" > 
 
      <tr> 
 
       <td align="right" valign="middle">Third Dropdown Menu</td> 
 
       <td align="left" valign="middle"> 
 
        <select disabled="disabled" id="category3" name="category3"> 
 
    <option class="label" value>Please Select</option> 
 
    <!-- R --> 
 
         <option rel="R12" value="12v1">R12V1</option> 
 
         <option rel="R24" value="R24v1">R24V1</option> 
 
         <option rel="R36" value="R36v1">R36V1</option> 
 
         <option rel="R48" value="R48v1">R48V1</option> 
 
         <option rel="R80" value="R80v1">R80V1</option> 
 
    <!-- H --> 
 
         <option rel="H12" value="H12v1">H12V1</option> 
 
         <option rel="H24" value="H24v1">H24V1</option> 
 
         <option rel="H36" value="H36v1">H36V1</option> 
 
         <option rel="H48" value="H48v1">H48V1</option> 
 
         <option rel="H80" value="H80v1">H80V1</option> 
 
    <!-- L --> 
 
         <option rel="L12" value="L12v1">L12V1</option> 
 
         <option rel="L24" value="L24v1">L24V1</option> 
 
         <option rel="L36" value="L36v1">L36V1</option> 
 
         <option rel="L48" value="L48v1">L48V1</option> 
 
         <option rel="L80" value="L80v1">L80V1</option> 
 
    <!-- B --> 
 
         <option rel="B12" value="B12v1">B12V1</option> 
 
         <option rel="B24" value="B24v1">B24V1</option> 
 
         <option rel="B36" value="B36v1">B36V1</option> 
 
         <option rel="B48" value="B48v1">B48V1</option> 
 
         <option rel="B80" value="B80v1">B80V1</option> 
 
        </select> 
 
       </td> 
 
      </tr> 
 
     </table> 
 
    </form>

関連する問題