2017-05-21 3 views
0

私は複雑なjavascriptの問題に巻き込まれています。onchange動的名を持つドロップダウンリストをフィルタリングしたい

2つのドロップダウンリストがあり、属性の名前は「動的」です。ユーザーはロジックが正常に動作しているdivを追加することができます。その問題は私が現在持っている問題とは関係ありません。

ユーザーがドロップダウンリストから商品を選択すると、商品インデックスに関連する年が表示されます。私は製品名と接尾辞を得ることができますが、会計年度の属性プロパティを取得または設定する方法はわかりません。代わりに、名前の

<script type="text/javascript"> 

    function loadYear(obj) { 
     alert("The attribute name is " + obj.name); 
     var suffix = obj.name.match(/\d+/); 
     alert("the suffix is " +suffix); 

     alert(" how to get the name and value of Fiscal_Year attribute that changes dynamically"); 

    } 
</script> 

<div class="row"> 
       <div class="form-group"> 
        <div class="col-md-10"> 
            <select name="[0].Product" onchange="loadYear(this);"> 
              <option value="15>Corporate HQ</option> 
              <option value="16">Data Campaign</option> 
              <option value="17">Digital Products </option> 
            </select> 
        </div> 
       </div> 

       <div class="form-group"> 
        <div class="col-md-8"> 
         <select name="[0].FISCAL_YEAR"> 
            <option value="15">FY15</option> 
            <option value="16">FY16</option> 
            <option value="17">FY17</option> 
         </select> 
        </div> 
       </div> 

</div> 

<div class="row"> 
       <div class="form-group"> 
        <div class="col-md-10"> 
            <select name="[1].Product" onchange="loadYear(this);"> 
              <option value="15>Corporate HQ</option> 
              <option value="16">Data Campaign</option> 
              <option value="17">Digital Products </option> 
            </select> 
        </div> 
       </div> 

       <div class="form-group"> 
        <div class="col-md-8"> 
         <select name="[1].FISCAL_YEAR"> 
            <option value="15">FY15</option> 
            <option value="16">FY16</option> 
            <option value="17">FY17</option> 
         </select> 
        </div> 
       </div> 

</div> 
+0

あなたは、すべてのjQueryを使用していますか? (私はjQueryを使って簡単な解決法を考え出すことができます。そうでなければ何らかの調査をしなければなりません) – pacifier21

+0

私はJqueryを他のロジックに使っています。私はこれもこれを使って大丈夫です。 – asreeram

答えて

0

よう[0].Product、あなたのloadYear機能であなただけの

obj.name.replace('Product_', ''); 

を行うことができますので、あなたが動的に、簡単になりますProduct_0FISCAL_YEAR_0、のような名前を作成し、それはあなたを与えるだろうカント選択された製品のインデックス..あなたは今年にアクセスするためにJavaScriptを使用することができます

あなたのロジックで可能ですか?

+0

私はC#を使用して値を取得しており、この方法で接尾辞を追加することは私が知る唯一の解決策です。 – asreeram

0

たぶん、このような何かが働くだろう:

function loadYear(obj) { 
    alert("The attribute name is " + obj.name); 
    var suffix = obj.name.match(/\d+/); 
    alert("the suffix is " +suffix); 

    // Get the year value from the year selection 
    var selectedYear = obj.value; 
    // Find the corresponding FISCAL_SELECT element 
    var fiscalSelects = document.getElementsByName("[" + suffix + "].FISCAL_YEAR"); 
    if (fiscalSelects != null && fiscalSelects.length > 0) { 
     // Set the value (assuming only one element exists) 
     fiscalSelects[0].value = selectedYear; 
    } 
} 

を要求したとして、ここではjQueryを使って実装され、その関数の最後のビットがある:

// Get the year value from the year selection 
var selectedYear = $(obj).val(); 
// Find the corresponding FISCAL_SELECT element 
var fiscalSelects = $('[name="[' + suffix + '].FISCAL_YEAR"]'); 
if (fiscalSelects != null && fiscalSelects.length > 0) { 
    // Set the value (assuming only one element exists) 
    fiscalSelects[0].val(selectedYear); 
} 
+0

私は今このオプションを試しています。 – asreeram

+0

素晴らしい!この回答を「回答」として受け入れることをお気軽に); – pacifier21

+0

こんにちは私はこれを私の質問への答えとして受け入れます!あなたがいなくても、Jqueryを使って解決策を教えてください。このスクリプトの部分をJqueryに移行しなければならないかもしれません。前もって感謝します。 – asreeram

関連する問題