Autor Zpráva
balidas
Profil *
Ahoj,

mam tabulku generovanou PHPckem, v kazdy radce je cena za kilo a 3 inputy (normalni, button a read only). Kdyz do normalniho (mam to jako mnozstvi) napisu cislo tak na onClick mi to do toho read only hodi soucin (celkovou cenu). Id vsech tech poli se generuje rovnez phpckem.

A ja bych chtel udelat javascript kterej by mi poscital vsechny read only ktery jsou zadany, jen nevim jak na to. Premejslel jsem jestli nejde nejak pouzit regular expression v getElementById, neco jako getElementByID("total_/^d$/"), coz by vzalo total_11, total_3 a kterykoliv jiny cislo na konci.

Stranky jsou na www.kulicka.borec.cz a jedna se o tabulku v products (aby byli videt ty inputy, tak je se treba zalogovat, username: test, password: test, nebo se muzete zaregistrovat :).).

Vim ze to neni zadna nadhera, ale jde hlavne o funkcnost a zadani (je do comaci ukol :)).
balidas
Profil *
neslo by treba nejak nadefinovat promenou ktera by rikala vsechny inputy zacinajici total_ a koncici cislem? Neco jako:

var total=new Array("total_/^d$/");

a pak s tim nejak pracovat dal.

Jo a nemam to radsi zkopirovat do zacatecnickyh dotazu? Jestli jsem s timhle dotazem ve spatny sekci ta pardon
balidas
Profil *
tak jeste jinak:

da se nejak zjednodusit zapis:

var total_1 = getElementByID("total_1").value;
var total_2 = getElementByID("total_2").value;
var total_3 = getElementByID("total_3").value;
.
.
.
.
var total_∞ = getElementByID("total_∞").value;

var total = total_1 + total_2 + total_3 + ....... + total_∞;

alert(total);
balidas
Profil *
tak jeste jinak :), tohle jsem z toho vyrezal:

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>

<html>
<head>
<title>Java test</title>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
<script>

function calculate(price,item_price,quantity){

var item_total = 0;
var total_price = 0;

var quantity = document.getElementById(quantity).value;
var item_total = Math.round(price * quantity * 100)/100; /* rounding to show decimals */
document.getElementById(item_price).value = item_total.toFixed([2]); /* toFixed([2]) means that result will have two decimal numbers */

var x=document.getElementById("ProductsLogged");
for (var i=1;i<(x.lenght);i=i+2)

{
if (x.elements[i].value!="")
{total_price = total_price + parseFloat(x.elements[i].value);}
}

document.getElementById("total").value = total_price.toFixed([2]);
}

</script>
</head>

<body>
<table width='75%' border='1' cellspacing='0' cellpadding='0'>
<form name='ProductsLogged' id='ProductsLogged'>
<tr>
<th>ID</th>
<th>Type</th>
<th>Name</th>
<th colspan='2'>Price</th>
<th>Image</th>
<th>Quantity</th>
<th>Total</th>
</tr>
<tr>
<td>8</td>
<td>fruit</td>
<td>apple</td>
<td width='30px'>2.60</td>
<td width='30px'>per kg</td>
<td width='100px' height='100px'><img src='IMAGES/PRODUCTS/apple.jpg'></td>
<td><input type='text' maxlength='4' value='0' style='width:40px' id='quantity_8' onKeyUp="calculate(2.60,'total_price_8','quantity_8')"></td>
<td><input type='text' maxlength='4' readonly style='width:80px' id='total_price_8'></td>
</tr>
<tr>
<td>9</td>
<td>fruit</td>
<td>hruska</td>
<td width='30px'>3.60</td>
<td width='30px'>per kg</td>
<td width='100px' height='100px'><img src='IMAGES/PRODUCTS/apple.jpg'></td>
<td><input type='text' maxlength='4' value='0' style='width:40px' id='quantity_9' onKeyUp="calculate(3.60,'total_price_9','quantity_9')"></td>
<td><input type='text' maxlength='4' readonly style='width:80px' id='total_price_9'></td>
</tr>
</table>
<p><b>Total<b><br><input type="text" id="total" name="total" readonly></p>
</form>
</html>

Jde mi o to aby to v kazdym druhym inputu secetlo value a hodilo ji to dolu do policka total. Jenze mi to tam porad hazi nulu a ja nevim proc.

Diik
balidas
Profil *
OMG, sry za posledni dotaz. Ted jsem na to prisel

napsal jsem: lenght misto: length

:)
vinnetou
Profil *
asi bych ty hodnoty v polich secetl jednoduse takhle (mam to udelany na nazvy formular.polich pomoci name ne id):

function celkovyVysledek(){
celkem=0;
delka=document.ProductsLogged.length;
for (i=0;i<delka;i++){
if (document.ProductsLogged.elements[i].name.indexOf("total_price_")!=-1 ){
celkem+=document.ProductsLogged.elements[i].value*1;
}
}
document.ProductsLogged.total.value=celkem;
}
balidas
Profil *
awsome dikes, presne tohle jsem potreboval a uz mi to krasne slape

cheers

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0