2013-08-28 2 views
0

Быстрый вопрос с вычислением JQuery.Расчет JQuery (позиции)

Скажем, у меня есть форма с флажками для каждого элемента и поле ввода текста для общей линии ...

Пункт 1 - $ 10, пункт 2 - $ 20, пункт 3 - $ 30, а затем линия Всего

, а затем другой ряд ...

Пункт 1 - $ 15, пункт 2 - $ 25, пункт 3 - $ 35, а затем линия Total

Как бы это было возможно установить "Line Итого" каждый элемент выбран в каждой строке? Я пробовал функцию .each и .map, которая позволяет вычислять (сложение и вычитание на основе «проверено») всего, но переносится на итоговую строку следующей строки, которая явно побеждает цель. Я могу только предположить, что кто-то делится с этим раньше?

Вот текущий код (Вышедшие из первоначально, потому что я чувствовал, что я был далеко Но если вам это нужно здесь.):

<?php 
while($row = mysqli_fetch_array($result)){ 
    echo ' 
    <tr> 
     <td>'.$row['pkgletter'].'</td> 
     <td>'.$row['item1'].'<br />$'.$row['item1_price'].'</td> 
     <td><input type="checkbox" class="lineitem" id="'.$row['pkgid'].'" value="'.$row['item1_price'].'" checked="" name="item1" /></td> 
     <td>'.$row['item2'].'<br />$'.$row['item2_price'].'</td> 
     <td><input type="checkbox" class="lineitem" id="'.$row['pkgid'].'" value="'.$row['item2_price'].'" checked="" name="item2" /></td> 
     <td>'.$row['item3'].'<br />$'.$row['item3_price'].'</td> 
     <td><input type="checkbox" class="lineitem" id="'.$row['pkgid'].'" value="'.$row['item3_price'].'" checked="" name="item3" /></td> 
     <td>$ <input class="linetotal" id="linetotal'.$row['pkgid'].'" size="10" type="text" name="linetotal" /></td> 
    </tr>'; 
} 
?> 

<script> 
$(document).ready(function(){ 
    $(".lineitem").click(function() { 
     var id = $(this).attr('id'); 
     var total = 0; 
     $(".lineitem:checked").each(function() { 
      total += parseInt($(this).val(), 10); 
     }); 
     $('#linetotal' + id).val(total); 
    }); 
}); 
</script> 
+0

Здесь php-код несколько вводит в заблуждение. Именно поэтому я и оставил его изначально. Я просто зацикливаю флажки и linetotal вход на основе запроса таблицы. Таким образом, он может возвращать 1 строку или 60, и именно поэтому мне нужно установить общее количество для каждой строки. – pm284

ответ

1

Ответ Aveendras выглядит нормально, но я предполагаю, что вам нужен один кодовый блок, который работает для всех строк, вместо того, чтобы создавать один для каждой строки вручную. Я предлагаю вам нажать на флажок. Рабочая jsFiddle: http://jsfiddle.net/danieltulp/c8ruP/

Html

<div id="line_01"> 
    <input type="checkbox" value="10" />10 
    <input type="checkbox" value="20" />20 
    <input type="checkbox" value="30" />30 
    <span class="total">Total: </span> 
</div> 

<div id="line_02"> 
    <input type="checkbox" value="15" />15 
    <input type="checkbox" value="25" />25 
    <input type="checkbox" value="35" />35 
    <span class="total">Total: </span> 
</div> 

JQuery

$("input").on("click", function(){ 
    var lineTotal=0; 
    var selfID = "#"+$(this).parent().attr('id'); 
    $(selfID +" > input").each(function(){ 
     if($(this).is(':checked')){ 
      lineTotal+=parseInt($(this).val()); 
     } 
    }); 
    $(selfID + " .total").text("Total: "+lineTotal); 
}); 

теперь я искал ID родителя, как я не делал, как делать что-то вроде $($this).("input").each(...., если кто-то может улучшить этот , пожалуйста, сделайте

+0

Это именно то, что я искал. Благодаря тонну. – pm284

+0

Любой хороший способ суммировать все итоги оттуда? – pm284

+0

Удалите Total: часть из диапазона, так что это всего лишь общее значение, затем используйте что-то вроде: 'var finalTotal = 0; $ (". total"). each (function() {finalTotal = finalTotal + $ (this) .text();}); ' –

0

Html

<div id="line_01"> 
<input type="checkbox" value="10" /> 
<input type="checkbox" value="20" /> 
<input type="checkbox" value="30" /> 
</div> 

<div id="line_02"> 
<input type="checkbox" value="15" /> 
<input type="checkbox" value="25" /> 
<input type="checkbox" value="35" /> 
</div> 

Jquery

var lineOneTotal=0; 

$('#line_01 > input').each(function(){ 
if($(this).is(':checked')){ 
lineOneTotal+=parseInt($(this).val()); 
} 
}); 


var lineTwoTotal=0; 

$('#line_02 > input').each(function(){ 
if($(this).is(':checked')){ 
lineTwoTotal+=parseInt($(this).val()); 
} 
}); 

alert(line one:'+lineOneTotal+' , line two:'+lineTwoTotal); 

Как я думаю, вы хотите какой-то такой код.

+0

Хм .. интересно, как я мог разобрать/создать id div с инструкцией php while. – pm284

+0

Я тоже хотел поблагодарить вас за ваше время. Эта функция работала, как вы ее раскрыли. – pm284

+0

добро пожаловать. –

Смежные вопросы