2016-12-03 9 views
0

私は実際に以下について助けが必要です。現在、ショッピングカートを開発中です。新しい商品がショッピングカートに追加されるたびに、ボタンになります。このボタン(製品)は、各製品にいくつかの修飾語を追加するために使用されます。ボタンの定義は以下に見られることができます。Jquery UIを選択可能:複数の選択可能なオブジェクトを定義する動的に

 var productAdded = $('<tr class="product" data-real_id = "'+ id +'" data-id_modal="'+ mod_id +'"><td class="product_name2"><button href="#0" class="button2" style="background-color:#00a65a;" data-comment="" data-modifiers="" data-span_mod = "" data-real_id = "'+ id +'" data-id_modall="'+ mod_id +'" id = "'+ comment_id +'">' + product_name + '</button></td><td class="quantity"><span class="select"><select id="cd-product-'+ id +'" name="quantity"><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option></select></span></td><td class="price">' + product_price + '</td><td><a href="#0" class="delete-item"><i class="fa fa-trash-o fa-2x" aria-hidden="true"></i></a></td></tr>'); 

製品のボタンのそれぞれが押されるたびにjQuery UIのダイアログウィンドウがjQueryのUIの選択可能なオブジェクトを含むwhic開かれた:

<div class="modal fade" id="modal">  
                <div class="modal-dialog">  
                 <div class="modal-content"> 
                 <div class="modal-header"></div> 
                 <div class="modal-body" style="margin-top:5px;"> 

                 <div style="width:100%; float:left;"> 
                  <label for="modifier">Τροποποιητές: </label> 
                  <span id="select-result" data-modifiers_span=""></span> 
                  <ol id="selectable" class="txt-modifiers"> 
                   <!-- INSERTED BY JQUERY DYNAMICALLY PER PRODUCT --> 
                  </ol> 
                 </div> 

                  <label for="comment">Σχόλιο: </label> 
                  <textarea rows="4" cols="50" name="comment" id="comment" value="" class="form-control txt-comment" style="vertical-align: top;"></textarea> 

                 </div> 
                 <div class="modal-footer" style="margin-top:10px;"> 
                 <button class="btn btn-success btn-save" data-id="" data-id_modall="">Αποθήκευση</button> 
                 <button class="btn btn-default" data-dismiss="modal">Κλείσιμο</button> 
                 </div> 
                </div> 
                </div> 
                </div> 

あなたは下記見ることができるように

$(document).on('click touchstart','.button2',function(e){ 
         e.preventDefault(); 

         var id  = $(this).attr('id'); //Get element id 
         var real_id = $(this).attr('data-real_id'); 
         var comment = $(this).attr('data-comment'); //Get comment 
         var modifiers = $(this).attr('data-modifiers'); //Get modifiers 
         var teeee  = $(this).attr('data-id_modall'); 

         $('#modal .txt-comment').val(comment); 
         $('#modal .btn-save').attr('data-id',id); 
         $('#modal .btn-save').attr('data-id_modall',teeee); 

         //alert(modifiers); 
         if (modifiers.length == 0) 
         { 
         $("#selectable").html('<img src="images/ajax-loader.gif" />'); 
         var request = $.ajax({ 
          url:   'http://127.0.0.1:8080/Food%20Ball/backup/FoodBall%20Site%20form_dt_2/Food%20Ball%20Site/get_item_modifiers.php?item_id=' + real_id, 
          cache:  false, 
          dataType:  'json', 
          contentType: 'application/json; charset=utf-8', 
          type:   'get', 
          success: function(data) { 
          if(data.result != 'Not'){ 
           $("#selectable").html(data.options); 
           $('#modal .txt-modifiers').val(data.options); 
          } 
          else{ $("#selectable").html('Δεν υπάρχουν!'); 
            $('#modal .txt-modifiers').val('Δεν υπάρχουν!'); } 
          } 
         }); 
         } 
         else { $('#modal .txt-modifiers').val(modifiers); $("#selectable").html(modifiers);} 
         $('#modal').dialog('open'); 


        }); 

および選択オブジェクト:

製品の改質剤は、MySQLデータベースからAJAZ + PHPを使用して抽出されます最後に
$(function() { 
         $('#selectable').on('touchstart mousedown', function(e) {e.metaKey = true;}) 
          .selectable({ 
            selected: function(event, ui) { 
            var result = $("#select-result").empty(); 
            $(".ui-selected", this).each(function() { 
             result.append($(this).attr('data-product_modifier') + ', '); 
            }); 
            },         
            unselected: function(event, ui){ 
             var result = $("#select-result"); 
            $(".ui-unselected", this).each(function() { 
             result.remove($(this).attr('data-product_modifier') + ', '); 
             }); 
            } 
           }); 
        }); 

そして、各ダイアログのモーダルウィンドウの「保存」ボタン:

$(document).on('click touchstart','.btn-save',function(e){ 
         e.preventDefault(); 
         var id =$(this).attr('data-id'); //Get data id 
         var comment =$('.txt-comment').val(); //get the comment 
         var modifiers =$('.txt-modifiers').val(); //get the modifier 

         //update the "order" note column modal 
         var note_modal = '#' + $(this).attr('data-id_modall'); //get the id row of the order modal 
         var note_modal2 = '#2' + $(this).attr('data-id_modall'); //get the id row of the order modal 

         $(note_modal).find('#note_modal').text(comment+'--'+modifiers); 
         $(note_modal2).find('#note_modal2').text(comment+'--'+modifiers); 

         $('#'+id).attr('data-comment',comment); 
         $('#'+id).attr('data-modifiers',modifiers); 


         //Save it in data base..s 
         $('#modal').dialog('close'); 
         $('.txt-comment').val('');//clear text area 
         $('.txt-modfiers').val('');//clear text area 
        }); 

        $(document).on('click','.btn-default',function(e){ 
         e.preventDefault(); 
         //Save it in data base..s 
         $('#modal').dialog('close'); 
         $('.txt-comment').val('');//clear text area 
         $('.txt-modfiers').val('');//clear text area       
        }); 

私の問題は、私は私のカートに複数の製品を追加した場合、選択修飾子は、すべての製品に表示されていることです。選択可能な複数のオブジェクトを動的に定義し、各製品の選択した修飾語を保存するにはどうすればよいですか?

誰もがこの上で助けることができる場合、私は

それを本当に感謝しますありがとう

答えて

0

okが、それを解決:

は単にAjax呼び出しの成功リターン以内に次のコードを入れて

var request = $.ajax({ 
          url:   'http://127.0.0.1:8080/Food%20Ball/backup/FoodBall%20Site%20form_dt_2/Food%20Ball%20Site/get_item_modifiers.php?item_id=' + real_id, 
          cache:  false, 
          dataType:  'json', 
          contentType: 'application/json; charset=utf-8', 
          type:   'get', 
          success: function(data) { 
          if(data.result != 'Not'){ 
           $("#selectable").html(data.options); 
           $('#modal .txt-modifiers').val(data.options); 
            $("#selectable").selectable({ 
             stop: function() { 
              result_mod = $(".select_result").empty();            
              $(".ui-selected", this).each(function() { 
              result_mod.append(' +' + $(this).attr('data-product_modifier')); 
              //array_mod = array_mod + (' +' + $(this).attr('data-product_modifier')); 
              $('#modal .select_result').val(result_mod); 
             }); 
             } 
            }); 
          } 
          else{ $("#selectable").html('Δεν υπάρχουν!'); 
            $('#modal .txt-modifiers').val('Δεν υπάρχουν!'); 
            $(".select_result").html(''); 
            $('#modal .select_result').val('');          
           } 
          } 
         }); 
関連する問題