Autor Zpráva
PetrQ
Profil
Ahoj všem,
prosím o radu - používám jquery pro přiřazení ceny k určité položce ze select boxu.
Celý formulář má jednu řádku, pokud chce uživatel přidat další, provede se to opět přes jquery a clone.
Problém je, že v dalších řádcích nelze po zvolení jiné položky ze selectu, přiřadit správnou cenu.
Je to použitý plugin jquery, protože sám to nevymyslím ...
Nemůžu přijít na to, jak to pořešit. Díky všem za radu Petr

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.table.addrow.js"></script>
<script type="text/javascript">
(function($){
	$(document).ready(function(){
		$(".addRow").btnAddRow();
		$(".delRow").btnDelRow();
});
})(jQuery);
</script>

<script type="text/javascript">

var message = new Array() 

message["Akustické klasická kytara"]="3000";
message["Akustické dreadnought"]="500";


	$(document).ready(
		function (){
 $(".item_select").change(function() 
    { 
        var message_index 
 
        message_index = $(".item_select").val(); 
        $(".message_display").empty(); 
 
        //if (message_index > 0) 
            $(".message_display").append(message[message_index]); 
			//$("input").val(message_index);
			$(".price").val(message[message_index]);
    }); 
});
	</script>

</head>
<body>
<br />
<br />
<font color='#CC3300' size='5'>Objednávka</font><br />
<br />
<form method='POST' name='signupForm' class='cmxform' id='signupForm' action='#'>
  <table cellspacing='0'>
    <tr>
      <th style='text-align: center;'></th>
      <th>Model</th>
      <th>Cena</th>
    </tr>
    <tr>
      <td><input type='button' class='delRow' style='height: 25px; margin: 0 0 10px 0;' value='X'/></td>
      <div>
        <td><select class='item_select' name='item_select' style='width:200px; margin: 0 0 10px 0;'>
            <option value='Akustické klasická kytara'>Akustické - klasická kytara</option>
            <option value='Akustické dreadnought'>Akustické - dreadnought</option>
          </select>
        </td>
        <td><input type='text' name='price' class='price' style='margin: 0 0 10px 0;' size='2' value=''></td>
      </div>
    </tr>
    <tr>
      <td colspan='3' align='right'><input type='button' class='addRow' name='add' value='Přidej řádek'/></td>
    </tr>
    <tr>
      <td colspan='5' align='center'><input type='submit' name='send' value='Potvrdit objednávku'></td>
    </tr>
  </table>
</form>
</body>
</html>

Chamurappi
Profil
Reaguji na PetraQ:
Předpokládáš, že si někdo zkopíruje uvedený kód do své stránky, přilinkuje si k němu svoji kopii jQuery, dohledá si příslušný plugin, ten přilinkuje a začne zkoumat, v čem je problém? Marně. Prosím o odkaz na živou ukázku.

v dalších řádcích nelze po zvolení jiné položky ze selectu, přiřadit správnou cenu
Selektory v jQuery nefungují stejně jako v CSS — pokud se změní struktura dokumentu, nevyhodnocují se znovu, takže pro nově vzniknuvší „.item_select“ se nenastaví tatáž „change“, co se nastavila pro ten první.

var message = new Array()
Proč Array?
PetrQ
Profil
Díky za reakci,
omlouvám se, domníval jsem se, že to bude triviální věc, protože javascript vůbec neznám.
1) odkaz je Odkaz
2) „var message = new Array()“ protože to tak psali v tutorialu
Leo
Profil
PetrQ:

"„var message = new Array()“ protože to tak psali v tutorialu"

Neveřte všemu, co se kde píše a hlavně u JavaScriptu. Problém je v tom, že to nehlásí chybu a lidi to používají dál, i když je to zbytečná deklarace. Když už tak

var message = {};

Leo

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: