2017-04-23 7 views
0

私はJQueryでクローニングしているこのテーブルの解決策を見つけることができません。私はテーブルを複製し、IDとNAMEのプロパティを更新してhtmlの競合を避けることができます。 Selectドロップダウンは、テーブルの最初の(元の)コピーを使用するときにイベントをJQueryにトリガするだけです。ただし、クローン版では、説明の数量と価格フィールドに記入するのに必要なイベントは発生しません。私は自分のテーブルとJQueryをポストしています。誰かが私にこれを動作させるために行方不明を知らせてもらえますか?イベントをトリガするために使用する固有のIDを持つ2つのテーブルを作成してJQueryをテストしましたが、これはうまくいきます。その後、JQueryを使用してテーブルをクローンすると、イベントはトリガーされません。クローン選択フィールドはイベントをトリガーしません

  <table> 
       <tr> 
        <td style="width:20%;"> 
         <div class="input-group date"> 
          <div class="input-group-addon"> 
           <span class="glyphicon glyphicon-duplicate addsection"></span> 
          </div> 
          <select class="form-control" id="ProductCode1" name="ProductCode1" style="border-bottom-color:black!important;border-color:white;"> 
           <option selected>Select Product</option> 
           <option value='292' data-description='APRIL Afternoon At the Greenhouse TICKET' data-price='35.00'>AAATG</option> 
           <option value='285' data-description='APRIL AFTERNOON AT THE GREENHOUSE Ticket EARLYBIRD SPECIAL' data-price='30.00'>AAATGearlybird</option> 
           <option value='30' data-description='Organic Adzuki Beans 1/2 Lb' data-price='4.25'>AB12LB</option> 
           <option value='31' data-description='Organic Adzuki Beans 1/4 Lb' data-price='2.25'>AB14LB</option> 
           <option value='29' data-description='Organic Adzuki Beans 1 Lb' data-price='8.00'>AB1LB</option> 
           <option value='47' data-description='Organic Adzuki Seeds 1 Lb' data-price='5.00'>ABS1LB</option> 
           <option value='145' data-description='Alberto&#x27;s Lemon/Garlic Salad Dressing 16 Oz.' data-price='11.00'>Alberto&#x27;s Dressing</option> 
           <option value='241' data-description='Organic Fenugreek Sprouted Beans 4 oz.' data-price='2.00'>APRIL</option> 
           <option value='310' data-description='Organic Fenugreek Sprouted Beans 16 oz' data-price='7.75'>April16oz</option> 
           <option value='309' data-description='Organic Fenugreek Sprouted Beans 8 oz' data-price='4.00'>April8oz</option> 
           <option value='284' data-description='SeaVeggieSpecialAUGUST1Kelp/1Dulse/1TripleBlendPACKAGE of 3' data-price='11.50'>AUGUST</option> 
           <option value='271' data-description='DM Organic Tomato Basil Sauce CASE' data-price='36.00'>BB BasilS case</option> 
           <option value='273' data-description='DM Organic Tomato Chili Sauce CASE' data-price='36.00'>BB ChiliS case</option> 
           <option value='276' data-description='DM Organic Linguine Pasta CASE' data-price='36.00'>BB Lpasta case</option> 
           <option value='277' data-description='DM Organic Extra Virgin Olive Oil 500ML CASE' data-price='84.00'>BB OO 500ML</option> 
           <option value='278' data-description='DM Organic Extra Virgin Olive Oil 750ML CASE' data-price='132.00'>BB OO 750ML</option> 
           <option value='275' data-description='DM Organic Spaghetti Pasta CASE' data-price='36.00'>BB Spasta case</option> 
           <option value='274' data-description='DM Organic Tagliatelle Pasta CASE' data-price='36.00'>BB Tpasta case</option> 
           <option value='272' data-description='DM Organic Tomato Vegetable Sauce CASE' data-price='36.00'>BB VegS case</option> 
           <option value='117' data-description='Organic Mixed Beans 1 Lb' data-price='8.00'>BEEMB</option> 
          </select> 
         </div> 
        <td style="width:70%;"><input id="ProductDesc1" class="form-control" style="width: 100%; border-bottom-color: black!important; border-color: white;" name="ProductDesc1" type="text" value="" /></td> 
        <td><input id="quantity1" class="form-control" style="width: 50px; border-bottom-color: black!important; border-color: white; text-align: center;" name="quantity1" type="text" value="0" placeholder="1" /></td> 
        <td> 
         <input id="ProductPrice1" class="form-control cost" style="width: 95px; text-align: center; border-bottom-color: black!important; border-color: white;" name="ProductPrice1" type="text" value="" placeholder="$0.00" /> 
        </td> 
        <td> 
         <div class="input-group-addon"> 
          <span class="glyphicon glyphicon-eject remove"></span> 
         </div> 
        </td> 
       </tr> 
      </table> 

クローンを行い、IDとNAMEプロパティを更新はJQuery:ページの順序でそう

をロードしたとき$(document).ready()関数内部

<script> 
      var template = $('#sections .section:first').clone(); 
      var sectionsCount = 1; 
      $('body').on('click', '.addsection', function() { 
       sectionsCount++; 
       var section = template.clone().find(':input').each(function() { 
        var newId = this.id.substring(0, this.id.length - 1) + sectionsCount; 
        var newName = this.name.substring(0, this.name.length - 1) + sectionsCount; 
        this.id = newId; 
        this.name = newName; 
       }).end() 
        .appendTo('#sections'); 
       return false; 
      }); 

      //remove section 
      $('#sections').on('click', '.remove', function() { 
       $(this).parent().fadeOut(300, function() { 
        $(this).parent().parent().empty(); 
        return false; 
       }); 
       return false; 
      }); 
    </script> 

Finally, the JQuery that listen to the Event to fill-in the remaining fields when I select a Product. 

    $(document).ready(function() { 

     $('#ProductCode1').on("change", function() { alert("It Works!") }); 
     $('#ProductCode2').on("change", function() { alert("It Works again!") }); 
     $('#ProductCode3').on("change", function() { alert("It Works a third time!") }); 
        }); 
    </script> 

答えて

0

jQueryコードのみ利用可能DOM要素に対して動作します動的にクローンされたドロップダウンのためにこれを動作させるには、 のようにバインドコードをjQueryに更新してくださいこの:これに

$(document).ready(function() { 
    $('#ProductCode1').on("change", function() { alert("It Works!") }); 
    $('#ProductCode2').on("change", function() { alert("It Works again!") }); 
    $('#ProductCode3').on("change", function() { alert("It Works a third time!") }); 
}); 

$(document).on('change', '#ProductCode1', function(){ alert("It Works!") }); 
$(document).on('change', '#ProductCode2', function(){ alert("It Works again!") }); 
$(document).on('change', '#ProductCode3', function(){ alert("It Works a third time!") }); 
+0

はご回答いただきありがとうございます。これは既存のJQueryスクリプトで動作します。クローンスクリプトはどのように扱いますか?私は、ユーザが余分な列を動的に追加し、それらをリアルタイムで処理できるようにしたいと考えています。潜在的な追加のCloned Productsラインを予期するために、事前に10個のハンドラを事前に作成することはできますが、余分な行が作成されたときにJQueryハンドラをクローンすることになります。 – Johnny

関連する問題