2016-12-06 84 views
0

基於數量的數量價格,我想創建一個購物車,其中一個客戶選擇自動添加到cart.and基於量價的數量可以更新自動完成搜索的項目。我已成功添加到購物車,但無法動態更新價格。 任何人都可以點我什麼是與現有的代碼中的錯誤:如何更新使用jQuery

$('#searchName').autocomplete({ 
    source: '{!! asset('nameAutocomplete') !!}', 
    select:function(suggestion,ui){ 
     event.preventDefault(); 
     var $tbody = $('#example tbody'); 
     $tbody.append('<tr><td class="id">' + ui.item.id + 
      '</td><td class="name">' + ui.item.value + 
      '</td><td class="price" id="price">' + ui.item.price + 
      '</td><td><input type="text" id="quantity" value="1"/></td><td><input type="text" id="total" readonly value="'+ui.item.price+'" class="readonly"/></td></tr>'); 

     $('#quantity').on('keyup',function(){ 
      var tot = ui.item.price * this.value; 
      $('#total').val(tot); 
     }); 
    }     
}); 

下面是表的部分代碼:

<table class="table table-striped table-bordered" id="example"> 
    <thead> 
     <tr>       
      <td>ID</td> 
      <td>Name</td> 
      <td>Price</td> 
      <td>Quantity</td> 
      <td>Total</td>      
     </tr> 
    </thead> 
    <tbody> 
    </tbody> 
</table> 

錯誤我越來越:

enter image description here

+2

每一行與「量」的相同ID的元素 – abc123

+2

'id's都必須是唯一的,但你會有''數量''ID =「數量」'''''ID =「總數」'。那麼你認爲怎樣的JavaScript就會知道哪些'$(「#數量」)'或'$(「#總」)'你選擇? – Sean

回答

2

請與下面的代碼,我添加了點點@Mayank代碼,

 var $tbody = $('#example tbody'); 
     $tbody.append('<tr><td class="id">' + ui.item.id + 
     '</td><td class="name">' + ui.item.value + 
     '</td><td class="price">' + ui.item.price + 
     '</td><td><input type="text" class="quantity" value="1"/></td><td><input type="text" class="total" readonly value="'+ui.item.price+'" class="readonly"/></td></tr>'); 


     $('.quantity').on('keyup',function(){ 
      //Corrected part 
      var tot = $(this).parent().prev().html() * this.value; 
      //var tot = ui.item.price * this.value; 
      //Assume that you are getting correct value to tot variable 
      $(this).parent().next().find('.total').val(tot);  
     }); 
+0

你的代碼的問題是總更新基礎上的數量,但不是在確切的行名稱。是指總的更新基於最後一個項目的價格,而我改變量 – Hola

+0

我更新的代碼。請檢查。你是對的。因爲它獲得相同的價格。我稍微改變了一下代碼。 – SilentCoder

0

讓下面像代碼更改:

var $tbody = $('#example tbody'); 
$tbody.append('<tr><td class="id">' + ui.item.id + 
    '</td><td class="name">' + ui.item.value + 
    '</td><td class="price">' + ui.item.price + 
    '</td><td><input type="text" class="quantity" value="1"/></td><td><input type="text" class="total" readonly value="'+ui.item.price+'" class="readonly"/></td></tr>'); 

    // Use class in place of id, as you cannot work with id for multiple occurance of same html 

$('.quantity').on('keyup',function(){ 
    var tot = ui.item.price * this.value; 
    $(this).find('.total').val(tot); // Use DOM traverse to get the next <input type="text" /> and put new total value to it 
}); 
+0

我總的第一次,但是當我更新數量..它無法更新的總價格與您的代碼。 – Hola

+0

@Hola我添加了一個答案。希望這會幫助你。 – SilentCoder