melvinn Ответов: 3

Получить общую сумму текстового поля в Javascript, php


вот мой php-код для отображения значений.
<input type="text" id="txtParticulars" name="txtParticulars" value="'.$Particular.'"><input type="text" id="txtQty'.$RSD_No.'" value ="'.$Quantity.'" readonly>
<input type="text" id="txtUP" name="txtUP'.$RSD_No.'" /><input type="text" id="txtTotal'.$RSD_No.'" readonly>
Total:<input type="text" id="txtGrandTotal" class="add" readonly />


и javascript.

function calc(row)
{
    var in1=document.getElementById('txtQty'+row).value;
    var in2=document.getElementById('txtUP'+row).value;
    var in3=in1*in2;
	var total = document.getElementById('txtTotal'+row).value=in3.toFixed(2); 
}


У меня есть текстовые поля, которые имеют значение, и мне нужно получить общую сумму.

3 Ответов

Рейтинг:
19

melvinn

function calc(row)
{
    var in1=document.getElementById('txtQty'+row).value;
    var in2=document.getElementById('txtUP'+row).value;
    var in3=in1*in2;
    var total = document.getElementById('txtTotal'+row).value=in3;
	sum();
}


function sum()
{
	var grandTotal = document.getElementById("txtGrandTotal");
   // grandTotal.value += parseInt(total);
   var arr = document.getElementsByName('txtTotal');
   var tot=0;
   for(var i=0;i<arr.length;i++)>
   {
		if(parseInt(arr[i].value))
			tot +=parseInt(arr[i].value);	
   }
   grandTotal.value = tot;
}


попробуй вот это. :)


Рейтинг:
1

Sinisa Hajnal

javascript или jQuery? В jQuery использование каждой функции легко решило бы эту проблему.

function sumRows() {
    var totalSum = 0;
    $("tr").each(function(item, index) {
        totalSum += item.value; // yor row values come here, item.value is just a placeholder
    });
}



В javascript вы должны выбрать по тегу и сделать цикл for, накапливая сумму каждой строки. Возможно, Вам потребуется дополнительная фильтрация, если ваш дизайн содержит другие строки...

Что-то вроде:

function sumRows() {
    var rows = document.getElementByTagName("tr");
    var totalSum = 0;
    for (i=0; i<rows.lenght-1;>    //do your summing here
        totalSum += 1; // yor row values come here
    }
}


Решение, основанное на ваших HTML с помощью jQuery. ^= читает как начинается с того, что он выбирает определенную серию входных блоков независимо от идентификационной части.

function sumRows()
{
    var particulars = $("input[id^=txtParticulars]");
    var sumParticulars = 0;
    if (particulars != null) 
        particulars.each(function(index) {
            sumParticulars += this.val();
        });

    var quantities = $("input[id^=txtQty]");
    var sumQuantities = 0;
    if (quantities != null){
        quantities.each(function(index) {
            sumQuantities += this.val();
        });
}


melvinn

у меня есть 4 текстовых поля в строке, то, что я хочу получить, - это общая сумма всех текстовых полей в последнем столбце.

Sinisa Hajnal

У вас уже есть функция, которая выполняет вычисление каждой строки in2 * in3. Выше приведена настройка...вам нужно заменить мои комментарии кодом, который вам нужно суммировать (в этом случае получите текстовое поле в строке, на которой в данный момент находится цикл, добавьте его к общей сумме (вам понадобится больше переменных суммы, если вам нужно суммировать четыре столбца или массив для хранения ваших сумм)

Это чисто клиентское решение - вы можете суммировать его на стороне сервера PHP и просто выплюнуть в HTML.

Denrich

привет, Синиса Хайнал, не могли бы вы дать нам пример кода? спасибо

Sinisa Hajnal

См. обновленное решение, последняя часть. Примите решение, если это поможет. Спасибо. Просто чтобы быть ясным, решение заключается в общей сумме по всем строкам. Итак, это будет резюме в нижней части сетки. Я знаю, что вы сказали, что вам нужна сумма по строке, но поскольку у вас уже есть функция, которая это делает, я предполагаю, что это ошибка в общении.

Так ли это? Ваша исходная функция суммирует Qty и UP в total (хотя я нахожу конструкцию total = something = something else странной :) )

Рейтинг:
0

Member 13592665

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
	<title>	Adding new textbox values </title>
	<script type="text/javascript">
		function viewsource(){
			alert(document.body.innerHTML);
		}
	</script>
	<script type="text/javascript">
		function addRowToTable(){
			var tbl = document.getElementById('tblSample');
			var frm=document.form0;
			if (!frm.ary) frm.ary=[frm.t1_2];
			var lastRow = tbl.rows.length;
			var iteration = lastRow;
			var row = tbl.insertRow(lastRow);

			var cellLeft = row.insertCell(0);
			var textNode = document.createTextNode(iteration);
			cellLeft.appendChild(textNode);

			var cellRight1 = row.insertCell(1);
			var el1 = document.createElement('input');
			el1.type = 'text';
			el1.name = 't' + iteration + '_1';
			el1.id = 't' + iteration + '_1';
			el1.size = 40;
			cellRight1.appendChild(el1);

			var cellRight2 = row.insertCell(2);
			var el2 = document.createElement('input');
			frm.ary.push(el2);
			el2.type = 'text';
			el2.value = '';
			el2.name = 't' + iteration + '_2';
			el2.id = 't' + iteration + '_2';
			el2.size = 5;
			el2.onkeyup=Calc;
			el2.onblur=Calc;
			cellRight2.appendChild(el2);
		}
	</script>
	<script type="text/javascript">
		function Calc(){
			var frm=document.form0;
			if (!frm.ary) frm.ary=[frm.t1_2];
			var total=0;
			for (var zxc0=0;zxc0<frm.ary.length;zxc0++){
				if (frm.ary[zxc0].value.length>0&&!isNaN(frm.ary[zxc0].value)) total+=frm.ary[zxc0].value*1;
			}
			frm.sum.value=total;
		}
	</script>
	</head>
	<body>
		<form action="none" method="get" name="form0" id="form0">
			<table border="0" id="tblSample" align="center">
				<tr>
					<th colspan="3"><br><br><br>Adding rows then adding up values entered<hr>
						<input type="button" value="Add new textbox" onclick="addRowToTable();"></th>
				</tr>
				<tr id="cloneid" >
					<td> 1 Name / Price </td>
					<td> <input type="text" name="t1_1" id="t1_1" size="40"> </td>
					<td> <input type="text" name="t1_2" id="t1_2" size="5" value="" onkeyup="Calc();" onblur="Calc();"></td>
				</tr>
			</table>
			<table border="0" align="center">
				<tr>
					<td colspan="3" align="center"><br><br>
						Sum: <input type="text" name="sum" id="sum"><br><br>
					</td>

				</tr>
			</table>
		</form>
	</body>
</html>