Nos, korábbi kérdésre nem született válasz, így továbbra se megy csak Opera és IE alatt a cucc, ott viszont tökéletes.
Belefutottam viszont egy másik problémába amit egész napos google se tudott megoldani (vagy nem tudom hogy kell keresni).
Problema:
több sorba van input mező külön frame-ba és számolni kellene az egy frameba levő input mezőértékeket.
Leírom kódba ugy értelmesebb:
< from name='form$sor' method='post' .......>
< input type='text' name='besz' onkeyup=\"setTimeout('recalc($sor)', 500);\" >
< input type='text' name='kicsi' value=$kicsi>
.....
....
< /from>
ezt egy while ciklus irja ki és a $sor értéke megegyezik a ciklusszámmal.
most jön a kérdés
function recal(id)
{
var x=window.form['id'].besz.value;
nah ez az ami nemjó.
azaz a form neve= formciklusszám de ezt hogy olvassam be js alatt?
pch
- 781 megtekintés
Hozzászólások
szerintem ezt te sem erted!
getElementsByTagName esetleg?
DOM a baratld.
t
- A hozzászóláshoz be kell jelentkezni
használj DOM-ot
document.forms['id'].elements['besz'].value
Egyébbként miért nem egyetlen formot használsz és a besz-nek adsz sorszámot. szerintem egyszerűbb kezelni, pláne ha mondjuk 5-nél több besz van az oldalon.
Mondjuk így
< form name=form metho.....
< input type.... name="besz$sor" ....
a függvényben pedig
function recal(id){
var nid="besz"+id;
var x=document.forms['form'].elements[nid].value
- A hozzászóláshoz be kell jelentkezni
Nos
a következőt kell megoldani.
adott egy tábla. annak elemei: beszár, kisker árrés, kiskerár, nagyker árrés, nagykerár, bolti ár.
Ezeket szedi ki egy while limit-el
viszont autómatikusan kell számolni ha beírja a beszárat.
és a sor végén a rögzit gombbal rögziteni az értéket.
valahogy igy néz ki:
cikknev cikkszam beszar kisker nagyker bolt rögzit
cikknev cikkszam beszar kisker nagyker bolt rögzit
\_sima kiirás_/ \_____input mezö_____/ \_submit
a beszár onkeyupal hívja a számolási js scriptet, ami kiolvassa a beszárat az input mezöböl, és kitölti a többi input mezöt. de term ha felülírja akkor a felülírt érték kerül rögzitésre.
Ez a feladat. ezért gondoltam, hogy soronként más form lenne, a rögzit miatt.
pch
- A hozzászóláshoz be kell jelentkezni
Én mondjuk így oldanám meg egyetlen formon belül
while(blablabla...){
cikknév cikkszám < input type....name=beszar$i event=func($i)>.... kisker$i nagyker$i bolt$i < a href=# onclick=rogzit($i).....> rogzit < /a >
...
function func(id){
var cid="beszar"+id;
var kisid="kisker"+id;
var nagyid="nagyker"+id;
var val=document.forms['formname'].elements[cid].value;
//calculate other values
var kiskerar=parseInt([ itt aztan kiszamolod ]);
var nagykerar=parseInt([ itt kiszamolod azt ]);
document.forms['formname'].elements[kisid].value=kiskerar;
document.forms['formname'].elements[nagyid].value=nagykerar;
}
valahogy igy. Rögzités esetén pedig ugyanigy hozzáférsz az IDhoz. Persze gondot jelenthet, hogy ilyenkor a form összes elemét elküldi. Ezt kiküszöbölheted, ha csinálsz három illetve X számú hidden mezőt, ahol az X jelenti az elküldenedő adatok számát, egy másik formban. A rögzítés esetén pedig ezeknek a mezőknek a megfelelő sorszámú paraméterek értékét adod.
Tehát ha mondjuk a hidden mező neve send_kisker lesz, akkor a document.forms['sendformname'].elements['send_kisker'].value=document.forms['formname'].elements[kiskerid].value
ezek után csak egy document.forms['sendformname'].submit(); kell.
Elsőre talán bonyolultabbnak hangzik, mint ezer formot használni, viszont sokkal újrahasznosíthatóbb. Illetve ha mondjuk valaki az egész táblázatot tölti ki és mondjuk úgy szeretné elküldeni, berakhatsz egy másik gombot, ami a legvégén van, csak annak a submitja a következő lesz: document.forms['formname'].submit();
Sőt, miután megírtam itt egy példaprogramban magamnak az egész dolgot, rájöttem, hogy a számolás és a küldés függvényének kódja csaknem azonos. Így össze lehet őket vonni egy függvénybe, ahol mondjuk a második paraméter az 'action'. A függvénybe meg egy switch-el eldöntöd mit kell csinálni.
de ez már csak finomkodás.
- A hozzászóláshoz be kell jelentkezni
Köszi. ez lett a nyertes :D
form name form1
while
{
< tr>
< td width='200' class='$table_back'>$megn< /a>< /td>
< td width='200' class='$table_back'>$cikkszam< /td>
< td class='$table_back'>< input type='text' value='$beszar' name='beszar$ddd' size='5' style='height:15' onkeyup=\"setTimeout('recalc($ddd)', 500);\" >
< input type='hidden' value='$id' name='id$ddd' >
< input type='hidden' value='$afa' name='afa$ddd' >< /td >
< td class='$table_back' >< input type='text' value='$kiskerar' name='kiskerar$ddd' size='5' style='height:15' >< input type='hidden' value='$kis_per' name='kis_per$ddd' >< /td >
< td class='$table_back' >< input type='text' value='$nagykerar' name='nagykerar$ddd' size='5' style='height:15' >< input type='hidden' value='$nagy_per' name='nagy_per$ddd' >< /td >
< td class='$table_back' >< input type='text' value='$boltiar' name='boltiar$ddd' size='5' style='height:15' >< /td >
< td width='20' class='$table_back' >< input type='button' value='Modosit!' style='height:15' size='5' onclick=\"elkuld($ddd);\" >
< /td >
< /tr >
$ddd++;
}
/form
az elküld meg:
function elkuld(id)
{
var be='beszar'+id;
var kiar='kiskerar'+id;
var nar='nagykerar'+id;
var bol='boltiar'+id;
var ide='id'+id;
var besz=self.window.form1.elements[be].value;
var kis=self.window.form1.elements[kiar].value;
var nagy=self.window.form1.elements[nar].value;
var bolt=self.window.form1.elements[bol].value;
var idet=self.window.form1.elements[ide].value;
var url='< ?php Print "cikkkarb_up.php?sid=$sid&user=$user&besz="; ? >' + besz + '< ?php Print "&kis="; ? >' + kis + '< ?php Print "&nagy="; ? >' + nagy + '< ?php Print "&bolt="; ? >' + bolt + '< ?php Print "&idet="; ? >' + idet;
var w = window.open(url, '', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=700,height=500,left = 150,top = 10');
}
- A hozzászóláshoz be kell jelentkezni