Autor | Zpráva | ||
---|---|---|---|
Cakewalk Profil |
Zdravím všechny.
Prosím o radu s problém zařazení funkce onChange. Jsem v Javě začátečník a tak prosím o trpělivost. Mám formulář, kde potřebuji dvě kolonky sloučit tak, že když zákazník vyplní jednu obsah se zkopíruje okamžitě i do druhé. Řešil jsem to přes funkci onChange, což je sice dost zbytečně složité, ale funguje. Ale pouze do doby než přejmenuji názvy polí. Uvedu příklad: <SCRIPT TYPE="text/javascript"> <!-- function orderTotal(oform) { // set references to fields var start_price = oform["start_price"]; var stHold = oform["stHold"]; var stVis = oform["stVis"]; // only bother if the field has contents if (start_price == "")return; // if the with is not a number (NaN) // or is zero or less // everything goes blank if(isNaN(start_price.value) || (start_price.value <= 0)) { start_price.value = ""; stHold.value = ""; } // else the field is a valid number, so calculate the // total order cost and put that value in the // hidden subtotal field else stHold.value = (Math.round(start_price.value * 1 * 100))/100; // call the routine which checks if the // visible subtotal is correct visTotal(oform); } // checks if the visible subtotal is correct // ie, if it equals the hidden subtotal field function visTotal(oform) { var stHold = oform["stHold"]; var stVis = oform["stVis"]; if (stVis.value != stHold.value) stVis.value = stHold.value; } // --> </SCRIPT> <TABLE BORDER CELLPADDING=3> <!-- table titles --> <!-- v-neck sweater --> <TR BGCOLOR="#FFFFCC"> <TD><INPUT TYPE=TEXT NAME="start_price" SIZE=3 onChange="orderTotal(this.form, 'start')" ></TD> <TD ALIGN=RIGHT> <INPUT TYPE=HIDDEN NAME="stHold"> <INPUT TYPE=TEXT NAME="stVis" SIZE=10 onChange="visTotal(this.form)" ></TD> </TR> </TABLE> Tento script nefunguje, ale když se pole start_price jmenuje jen price. Je vše OK. Nevíte, kde je chyba. Případně, jak by šlo vyřešit kopírování řádku ve formuláři jinak? Moc díky za pomoc. Moderátor Chamurappi: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
_es Profil |
#2 · Zasláno: 1. 10. 2011, 20:04:12
Cakewalk:
„Jsem v Javě začátečník“ JavaScript není Java „když se pole start_price jmenuje jen price. Je vše OK. Nevíte, kde je chyba.“ No tak prečo ho premenúvaš:-)? Alebo ho potom premenuj aj v JS kóde. Kde JS pristupuje k elementu s takým názvom si snáď nájdeš aj sám. |
||
Witiko Profil |
#3 · Zasláno: 2. 10. 2011, 00:45:07 · Upravil/a: Witiko
Cakewalk:
„Tento script nefunguje, ale když se pole start_price jmenuje jen price.“ To bude kvůli tomuto řádku: var start_price = oform["start_price"]; oform["start_price"] odkazuje na formulářový prvek jménem start_price uvnitř formuláře, který je nejspíš definovaný někde mimo zaslaný kód.
|
||
Cakewalk Profil |
#4 · Zasláno: 2. 10. 2011, 11:13:03
Díky za reakci.
To pole se musí jmenovat start_price a pole, kde se to má přesně kopírovat se musí jmenovat buyout_price. Toto musím zachovat. Spíš bych řekl, že je script bere ten název jako jméno s prefixem a to je problém. Spíš bych to řešil jiným kódem, ale nevím jakým. |
||
_es Profil |
#5 · Zasláno: 2. 10. 2011, 11:17:23
Cakewalk:
Viď [#3]. |
||
Cakewalk Profil |
#6 · Zasláno: 2. 10. 2011, 20:50:11
Díky všem, problém jsem vyřešil jednoduchou formou:
<script type="text/javascript"> function copy() { var tmp = document.getElementById('price').value; tmp = tmp.replace(/[/]+/g, "R"); document.getElementById('buyout_field').value = tmp; } </script> Jednoduché a prosté. Ještě jednou díky. |
||
Časová prodleva: 13 let
|
0