这里我有表中显示的值列表,其中每行都有复选框类型,列表看起来像这样
当我点击行值得到的最后一行但是如果我点击第二行两次行值出现,如果我去第三行,则该行值的三倍即将到来
这是我的代码
<script>
$(document).ready(function () {
var qua=[];
var amnt=[];
$("#getdata").on('click',function () {
var form_data={
agent_name: $('#agent_name').val(),
number: $('#number').val(),
number_from: $('#number_from').val(),
number_to: $('#number_to').val(),
quantity: $('#quantity').val(),
amount: $('#amount').val(),
date: $('#date').val(),
commision: $('#commision').val(),
profit: $('#profit').val(),
agent_amount: $('#agent_amount').val(),
user_id: $('#user_id').val(),
type: $("#abc_type_"+$("input[name=select_type]:checked").val()).val()
}
$.ajax({
type: 'POST',
url: '<?php echo base_url();?>app/admin_control/ajax_data',
data: form_data,
dataType:"json", //to parse string into JSON object,
success: function(data){
var fragment = '';
for(var i=0; i < data.json.length; i++){
fragment += '<tr class="item-row"><td><input type="hidden" id="add_type" name="add_type[]" value="'+ data.json[i].type +'">'+ data.json[i].type +'</td><td><input type="hidden" id="add_number" name="add_number[]" value="'+ data.json[i].number +'">'+ data.json[i].number +'</td><td><input type="hidden" class="add_quantity" id="add_quantity" name="add_quantity[]" value="'+ data.json[i].quantity +'">'+ data.json[i].quantity +'</td><td><input type="hidden" class="add_amount" id="add_amount" name="add_amount[]" value="'+ data.json[i].amount +'">'+ data.json[i].amount +'</td><td><input type="checkbox" class="add_checkbox" name="add_checkbox" id="add_checkbox'+i+'" value="1" checked></td></tr>';
}
qua_sum = 0;num_sum = 0;txt='';
$("#table").append(fragment);
$(".add_checkbox").on('click',function(){
alert();
if($(this).is(':checked'))
{
qua_su=$("#total_quantity").text() == '' ? 0 : parseFloat($("#total_quantity").text());
num_su=$("#total_amount").text() == '' ? 0 : parseFloat($("#total_amount").text());
var q=$(this).closest('.item-row').find('.add_quantity').val();
alert(q);
var a=$(this).closest('.item-row').find('.add_amount').val();
alert(a);
qu=$('#total_quantity').text(parseInt(qua_su) + parseInt(q));
nu=$('#total_amount').text(parseInt(num_su) + parseInt(a));
}
else
{
qua_su=$("#total_quantity").text() == '' ? 0 : parseFloat($("#total_quantity").text());
num_su=$("#total_amount").text() == '' ? 0 : parseFloat($("#total_amount").text());
var q=$(this).closest('.item-row').find('.add_quantity').val();
alert(q);
var a=$(this).closest('.item-row').find('.add_amount').val();
alert(a);
qu=$('#total_quantity').text(qua_su-q);
nu=$('#total_amount').text(num_su-a);
}
// Then you write the output where you want :
});
},
error: function(jqXHR, textStatus, errorThrown){
alert('error: ' + textStatus + ': ' + errorThrown);
}
});
});
return false;
});
希望你能清楚地理解这个问题。
我的数据看起来像这样
{"json":[{"agent_name":"admin","number":"212","type":"super","quantity":"33","amount":"330.00","date":"2018-02-21 15:58:57","commision":"10.00","profit":"330.00","agent_amount":"0.00","user_id":"1"}]}
{"json":[{"agent_name":"admin","number":"444","type":"super","quantity":"44","amount":"440.00","date":"2018-02-21 15:58:57","commision":"10.00","profit":"440.00","agent_amount":"0.00","user_id":"1"}]}
{"json":[{"agent_name":"admin","number":"444","type":"super","quantity":"44","amount":"440.00","date":"2018-02-21 15:58:57","commision":"10.00","profit":"440.00","agent_amount":"0.00","user_id":"1"}]}
答案 0 :(得分:2)
$(function() {
var data = {
json: [
{type: 'super', number: '100', quantity: 10, amount: 100.00},
{type: 'super', number: '200', quantity: 20, amount: 200.00},
{type: 'super', number: '300', quantity: 30, amount: 300.00}
]
};
var fragment = '';
for(var i=0; i < data.json.length; i++){
fragment += '<tr class="item-row"><td><input type="hidden" id="add_type" name="add_type[]" value="'+ data.json[i].type +'">'+ data.json[i].type +'</td><td><input type="hidden" id="add_number" name="add_number[]" value="'+ data.json[i].number +'">'+ data.json[i].number +'</td><td><input type="hidden" class="add_quantity" id="add_quantity" name="add_quantity[]" value="'+ data.json[i].quantity +'">'+ data.json[i].quantity +'</td><td><input type="hidden" class="add_amount" id="add_amount" name="add_amount[]" value="'+ data.json[i].amount +'">'+ data.json[i].amount +'</td><td><input type="checkbox" class="add_checkbox" name="add_checkbox" id="add_checkbox'+i+'" value="1" checked></td></tr>';
}
$('#table').html(fragment);
$(".add_checkbox").on('click',function(){
var checkbox_list = $(".add_checkbox"); // select all your checkbox elt
// You put your sum to 0 (or if you have an other value from an other place than your table, init them with this value
var qua_su = 0;
var num_su = 0;
// You loop through all you checkbox to see if they are check or not
$.each(checkbox_list, function() {
if ($(this).is(':checked')) {
qua_su += parseInt($(this).parent().parent().find('.add_quantity').val()) ;
num_su += parseInt($(this).parent().parent().find('.add_amount').val()) ;
}
});
// Then you write the output where you want :
$('#total_quantity').html(qua_su);
$('#total_amount').html(num_su);
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table id="table">
</table>
<p>Total Quantity: <span id="total_quantity">60</span></p>
<p>Total Amount: <span id="total_amount">600</span></p>
&#13;
首先,循环并创建具有相同id的行,以便在每个id之后添加i值以具有唯一ID:
// every time you have an id, do :
... + id="yourIDname_" + i + ...
EG:
for(var i=0; i < data.json.length; i++){
fragment += '... id="add_type_"' + i + '....
}
这样,每行都会有唯一的ID。
然后尝试这种方式:
// Trigger every time a checkbox is click
$(".add_checkbox").on('click',function(){
var checkbox_list = $(".add_checkbox"); // select all your checkbox elt
// You put your sum to 0 (or if you have an other value from an other place than your table, init them with this value
var qua_su = 0;
var num_su = 0;
// You loop through all you checkbox to see if they are check or not
$.each(checkbox_list, function() {
if ($(this).is('checked') {
// you get the value of your row and added it to your sum
qua_su += // the value
num_su += // the value
}
}
// Then you write the output where you want :
$('#total_quantity').html(qua_su);
$('#total_amount').html(num_su);
});
这是你在找什么?
答案 1 :(得分:1)
我让你的代码运行。好像没问题。这是你想要的行为吗?
$(function() {
var data = {
json: [
{type: 'super', number: '100', quantity: 10, amount: 100.00},
{type: 'super', number: '200', quantity: 20, amount: 200.00},
{type: 'super', number: '300', quantity: 30, amount: 300.00}
]
};
var fragment = '';
for(var i=0; i < data.json.length; i++){
fragment += '<tr class="item-row"><td><input type="hidden" id="add_type" name="add_type[]" value="'+ data.json[i].type +'">'+ data.json[i].type +'</td><td><input type="hidden" id="add_number" name="add_number[]" value="'+ data.json[i].number +'">'+ data.json[i].number +'</td><td><input type="hidden" class="add_quantity" id="add_quantity" name="add_quantity[]" value="'+ data.json[i].quantity +'">'+ data.json[i].quantity +'</td><td><input type="hidden" class="add_amount" id="add_amount" name="add_amount[]" value="'+ data.json[i].amount +'">'+ data.json[i].amount +'</td><td><input type="checkbox" class="add_checkbox" name="add_checkbox" id="add_checkbox'+i+'" value="1" checked></td></tr>';
}
$('#table').html(fragment);
$(".add_checkbox").on('click',function(){
if($(this).is(':checked'))
{
qua_su=$("#total_quantity").text() == '' ? 0 : parseFloat($("#total_quantity").text());
num_su=$("#total_amount").text() == '' ? 0 : parseFloat($("#total_amount").text());
var q=$(this).closest('.item-row').find('.add_quantity').val();
var a=$(this).closest('.item-row').find('.add_amount').val();
$('#total_quantity').text(parseInt(qua_su) + parseInt(q));
$('#total_amount').text(parseInt(num_su) + parseInt(a));
}
else
{
qua_su=$("#total_quantity").text() == '' ? 0 : parseFloat($("#total_quantity").text());
num_su=$("#total_amount").text() == '' ? 0 : parseFloat($("#total_amount").text());
var q=$(this).closest('.item-row').find('.add_quantity').val();
var a=$(this).closest('.item-row').find('.add_amount').val();
$('#total_quantity').text(qua_su-q);
$('#total_amount').text(num_su-a);
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table id="table">
</table>
<p>Total Quantity: <span id="total_quantity">60</span></p>
<p>Total Amount: <span id="total_amount">600</span></p>