Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Работа с "динамической" формой. (https://javascript.ru/forum/dom-window/12616-rabota-s-dinamicheskojj-formojj.html)

lolka84 26.10.2010 09:05

Работа с "динамической" формой.
 
Добрый день, незнаю, насколько правильно обозвал в сабже проблему, суть в следущем:
Есть форма, куда подгружаются данные из бд. Фишка в том, что эти данные каждый раз разные, соответственно имена и id input'ов тоже каждый раз разные.
Что бы было понятно:
<?php
			$queryonerazd = mysql_query("SELECT `id`,`podrazdel`,`devnamesm`,`defkol`,`stoim` FROM `smdevice` WHERE `razdel` = '1' AND `notuse` = '0' AND `smuse` = '1' ORDER BY `podrazdel` ASC") or die(mysql_error());
			  if (mysql_num_rows($queryonerazd) > 0) {
			    while ($arronerazd = mysql_fetch_assoc($queryonerazd)) { 
?>

<tr>
              <td>&nbsp;1.<?php echo $arronerazd['podrazdel']; ?><input type='text' name='<?php echo $arronerazd['id']; ?>' value='<?php echo $arronerazd['id']; ?>' style='display:none' /></td>
              <td>&nbsp;<?php echo $arronerazd['devnamesm']; ?></td>
              <td><input type='text' name='defcol<?php echo $arronerazd['id']; ?>' value='<?php echo $arronerazd['defkol']; ?>' /></td>
              <td><input type='text' name='cena<?php echo $arronerazd['id']; ?>' value='<?php echo $arronerazd['stoim']; ?>' /></td>
              <td><input type='text' name='summye<?php echo $arronerazd['id']; ?>' value='' /></td>
              <td><input type='text' name='summrur<?php echo $arronerazd['id']; ?>' value='' /></td>
              <td><input type='checkbox' name='arn<?php echo $arronerazd['id']; ?>' value='1' /></td>
</tr>

<?php  
                }
			  }
			mysql_free_result($queryonerazd);
?>

В результате получается чтото типа этого:
<tr>
              <td>&nbsp;1.1<input type='text' name='3' value='3' style='display:none' /></td>
              <td>&nbsp;Блок РЕКС 2В</td>
              <td><input type='text' name='defcol3' value='' /></td>
              <td><input type='text' name='cena3' value='300.00' /></td>
              <td><input type='text' name='summye3' value='' /></td>
              <td><input type='text' name='summrur3' value='' /></td>
              <td><input type='checkbox' name='arn3' value='1' /></td>
</tr>

Т.е. проще говоря, к каждому имени поля добавляется уникальный ID записи в БД, разделов <tr></tr> может быть сколько угодно много или мало, не суть, суть в том, что каждый раз их разное кол-во.
Нужно следущее: у нас есть колонка с ценой и колонка с кол-вом (cena и defcol соотвтественно). В колонке кол-ва пишем число, которое умножается на цену и в колонках summye и summrur выводятся произведения кол-ва на сумму.
Вроде все просто, если б имена были постоянными, выдернуть значение поля по id никаких проблем не составляет, а как быть в этом случае ?
Единственная мысль, которая летает в голове, это выдернуть число (id) из 1го скрытого поля <input type='text' name='3' value='3' style='display:none' /> и далее уже с ним работать, но как это сделать ?
Посоветуйте алгоритм, пожалуйста.

subzey 26.10.2010 11:30

Коль скоро цена и количество находятся в одной строке, Вы можете, отталкиваясь от инпута, найти tr-родитель, а в tr найти инпут с нужным именем.

lolka84 26.10.2010 11:56

Цитата:

Сообщение от subzey (Сообщение 75902)
найти tr-родитель, а в tr найти инпут с нужным именем.

Можно чуть подробнее, ибо я новичек в js и просто вот так вот не совсем понимаю, как "найти tr-родитель" :)

ksa 26.10.2010 13:43

Цитата:

Сообщение от lolka84
Можно чуть подробнее

Что-то типа такого...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script>
function Calc(Obj) {
	var o=Obj.parentElement 
	o=o.parentElement
	var o1=o.cells[0]
	var o2=o.cells[1]
	var o3=o.cells[2]
	o1=o1.getElementsByTagName('input')[0]
	o2=o2.getElementsByTagName('input')[0]
	o3=o3.getElementsByTagName('input')[0]
	o3.value=o1.value*o2.value
}
</script>
</head>
<body>
<table>
<tr>
	<td>
		<input type='text' onchange='Calc(this)' />
	</td>
	<td>
		<input type='text' onchange='Calc(this)' />
	</td>
	<td>
		<input type='text' />
	</td>
</tr>
</table>
</body>
</html>

lolka84 27.10.2010 08:43

Цитата:

Сообщение от ksa (Сообщение 75929)
Что-то типа такого...

Благодарю всяко, подогнал под себя - работает как часы :)


Часовой пояс GMT +3, время: 01:39.