Перейти к содержимому



Помогите разобраться с формой

#1 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71
0

Отправлено 30 Август 2009 - 18:22

есть форма
		
while ($material_select = mysql_fetch_assoc($material_query))
{
echo "<tr>
<td>".htmlspecialchars ( $material_select['material'] )."</td>
<td align=\"center\">".htmlspecialchars ( $material_select['price'] )."</td>
<td align=\"center\"><input type=\"text\" name=\"gramm[]\" size=\"2\" maxlength=\"2\" /></td>
<td align=\"center\"><input type=\"checkbox\" name=\"material[]\" value=\"".htmlspecialchars ( $material_select['id'] )."\" /></td>
</tr>";
}

т.е. количество полей изначально не определено, а зависит от количества записей в таблицы, так вот как сделать неактивными по умолчанию input type="text", а становятся они активными, только после того как поставят галочку в input type="checkbox"? спасибо!

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Помогите сделать почтовую форму
  2. Помогите с вёрсткой формы!
  3. Помогите разобраться с шаблоном
  4. Помогите разобраться с фотографиями
  5. Помогите разобраться с микроразметкой

#2 Евгений

Евгений
  • Пользователь
  • 481 сообщений
  • Репутация: 0

Отправлено 31 Август 2009 - 04:49

sc2r2bey, большенство людей которые сидят в этом разделе могут не понять вставок на php.
Можно этот же пример только на практике (для конкретной задачи)? я чувствую что то что Вы хотите сделать надо делать другими способами :-)
  • 0

#3 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 31 Август 2009 - 07:31

я не совсем понял, что вы хотите, но попробую:

<form action="index.php" method="post" >
<tr>
<td>материал</td>
<td>цена</td>
<td><input type="text" name="gramm" size="2" maxlength="2" /></td>
<td><input type="checkbox" name="material" value="0" /></td>
</tr>
<input type="submit" value="далее" />
</form>

  • 0

#4 EugeneM

EugeneM
  • Пользователь
  • 20 сообщений
  • Репутация: 0

Отправлено 31 Август 2009 - 16:03

Ну тогда как вариант еще - после Вашего цикла, выводящего форму, добавьте что-то типа
<script type="text/javascript">
   uncheck_all();
</script>
И, соответственно, в предварительно написанной функции uncheck_all() будет цикл по всем элементам формы. И в нем уже и будете смотреть, нужно ли элемент делать неактивным: галка стоит - ничего не трогаем, галки нет - делаем неактивным.
  • 0

#5 xakki

xakki
  • Пользователь
  • 27 сообщений
  • Репутация: 0

Отправлено 31 Август 2009 - 16:09

jQuery в помощь.
Может так?
<!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" xml:lang="ru" lang="ru">
<head>
<title>Пример</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<meta http-equiv="Pragma" content="no-cache"/>
<script type="text/javascript" src="http://xakki.ru/test/jquery.js"></script>
<script type="text/javascript">
function fcheck(obj) {
trobj = $(obj).parent().parent();
if(obj.checked==true) {
$(trobj).clone().insertAfter(trobj);
$(trobj).find("td>input[type='text']").attr("disabled","");
$(trobj).next().find("td>input[type='checkbox']").attr("checked","");
}else if(trobj.parent().children().length>1){
$(trobj).next().remove();
$(trobj).find("td>input[type='text']").attr("disabled","disabled");
} else
$(trobj).find("td>input[type='text']").attr("disabled","disabled");
return true;
}
</script>
</head>
<body>
<form action="temp.html" method="post" >
<table cellspacing="1">
<tr>
<td>материал</td>
<td>цена</td>
<td><input type="text" name="gramm[]" size="2" maxlength="2" disabled="disabled"/></td>
<td><input type="checkbox" name="material[]" value="0" onchange="return fcheck(this);"/></td>
</tr>
</table>
<input type="submit" value="далее" />

</form>
</body>
</html>


Вот примерчик http://xakki.ru/test/temp1.html
  • 0

#6 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 31 Август 2009 - 16:48

xakki, не так, мне не надо добавлять новые поля
мне просто надо делать активным поле при активации чекбокса!


  • 0

#7 xakki

xakki
  • Пользователь
  • 27 сообщений
  • Репутация: 0

Отправлено 01 Сентябрь 2009 - 14:17

чуток изменить да и всё

<!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" xml:lang="ru" lang="ru">
<head>
<title>Пример</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<meta http-equiv="Pragma" content="no-cache"/>
<script type="text/javascript" src="http://xakki.ru/test/jquery.js"></script>
<script type="text/javascript">
function fcheck(obj) {
trobj = $(obj).parent().parent();
if(obj.checked==true)
$(trobj).find("td>input[type='text']").attr("disabled","");
else
$(trobj).find("td>input[type='text']").attr("disabled","disabled");
return true;
}
</script>
</head>
<body>
<form action="temp.html" method="post" >
<table cellspacing="1">
<tr>
<td>материал</td>
<td>цена</td>
<td><input type="text" name="gramm[]" size="2" maxlength="2" disabled="disabled"/></td>
<td><input type="checkbox" name="material[]" value="0" onchange="return fcheck(this);"/></td>
</tr>
<tr>
<td>материал</td>
<td>цена</td>
<td><input type="text" name="gramm[]" size="2" maxlength="2" disabled="disabled"/></td>
<td><input type="checkbox" name="material[]" value="0" onchange="return fcheck(this);"/></td>
</tr>
</table>
<input type="submit" value="далее" />

</form>
</body>
</html>

  • 0

#8 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 01 Сентябрь 2009 - 15:12

а обязательно с jquery? без нее что нельзя :mellow:
  • 0

#9 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 03 Сентябрь 2009 - 02:01

sc2r2bey, Можно, но на jQuery элегантнее и код красивее. Советую использовать. Всего-то 1 файл дополнительный подключить, да и при том можно в сжатом варианте.

Если хотите без неё, то почитайте про DOM. Тут именно он вам и пригодится. Нужно будет найти нужный вам текстовый input, а это проверка соответствия типа по всем узлам родителя.
Могу написать если есть желание, просто заморачиваться не хочу...
  • 0

#10 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 03 Сентябрь 2009 - 09:26

вот на js и ничего лишнего
		while ($material_select = mysql_fetch_assoc($material_query))
{
echo "<tr>
<td>".htmlspecialchars ( $material_select['material'] )."</td>
<td align=\"center\">".htmlspecialchars ( $material_select['price'] )."</td>
<td align=\"center\"><input type=\"text\" disabled=\"disabled\" name=\"gramm[]\" size=\"2\" maxlength=\"2\" /></td>
<td align=\"center\"><input type=\"checkbox\" name=\"material[]\" onchange=\"changeBox(this)\" value=\"".htmlspecialchars (material_select['id'])."\" /></td>";
?>
</tr>
<?php
}


и
<script type="text/javascript">
function changeBox(ele){
	for(var i=0;i<document.forms.form['gramm[]'].length;i++){
		document.forms.form['gramm[]'][i].disabled=(!document.forms.form['material[]'][i].checked);
	}
}
		</script>

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru