Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Массив через форму. / 17 сообщений из 17, страница 1 из 1
22.12.2009, 12:57
    #36379628
Esofter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив через форму.
Есть список с полями выбора(чекбокс). При отправке формы нужно передать обработчику массив из значений этих выбраных чекбоксов.
Например есть такой список:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
...
<tr class="first">
     <td><input type="checkbox" name="01" /></td>
     <td><span> 000001 </span></td>
</tr>	
<tr class="second">
    <td><input type="checkbox" name="02" /></td>
    <td><span> 000002 </span></td>
</tr>
...


Когда отправилась форма, надо передать обработчику массив имен выбраных чекбоксов. Эта таблицы находится не в форме. Выходит ее надо в любом случае в форму запихивать?
А вообщем задача такая: имеется список клиентов, и снизу селект, в котором варианты действия с выбраными(удалить, заблокировать, разблокировать).

Как решить такую задачу? Заранее спасибо всем кто прочитал.
...
Рейтинг: 0 / 0
22.12.2009, 13:02
    #36379645
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив через форму.
EsofterКак решить такую задачу?Пробежаться по таблице, посмотреть чекбоксы, выбранные склеить в некоторую строку.
На форме должно быть поле типа hidden (не забываем указать name, чтоб ушло на сервер), его значению присвоить эту строку.
Всё это перед отправкой формы.
...
Рейтинг: 0 / 0
22.12.2009, 13:03
    #36379651
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив через форму.
на сервере разобрать значение, пришедшее с этого поля
...
Рейтинг: 0 / 0
22.12.2009, 13:08
    #36379669
Esofter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив через форму.
Яростный МечEsofterКак решить такую задачу?Пробежаться по таблице, посмотреть чекбоксы, выбранные склеить в некоторую строку.
На форме должно быть поле типа hidden (не забываем указать name, чтоб ушло на сервер), его значению присвоить эту строку.
Всё это перед отправкой формы.

Понял, спасибо.
...
Рейтинг: 0 / 0
22.12.2009, 13:09
    #36379674
Esofter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив через форму.
Яростный Меч,

Но думаю потом еще появятся вопросы, так что пока не убегай никуда :).
...
Рейтинг: 0 / 0
22.12.2009, 13:27
    #36379748
Esofter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив через форму.
Первый вопрос по этому методу:

Это просто чекбоксы, а мне надо знать айдишники клиентов. Есть идея у этого чекбокса айди ставить такое, как айди соответствующего клиента. При сабмите формы вызвать функцию гетЭлементсБайТагНейм(), так я соберу все чекбоксы, потом в цыкле по этой колекции бежать и конкантеировать к значению хиддена айди чекбокса который выбран.

Нормальное решение?
...
Рейтинг: 0 / 0
22.12.2009, 13:41
    #36379815
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив через форму.
EsofterНормальное решение?
Главное разделитель нормальный придумай...
...
Рейтинг: 0 / 0
22.12.2009, 13:55
    #36379868
Esofter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив через форму.
krvsaEsofterНормальное решение?
Главное разделитель нормальный придумай...

Ясное дело.

Вот написал, но не работает. Я с джаваскриптом не очень дружу.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
	function select_all()
	{
		var head_select = document.getElementsById('headselect');//это верхний чекбокс
		var val = '';
		if(head_select.checked=='')
			val = 'checked';
		else
			val = '';
		var elems = document.getElementsByName('galka');
		for(var i =  0 ;i< elems.length;i++)
		{
			elems[i].checked = val;
		}
	}

Все чекбокы всегда выбраны. Думаю это из-за того что если у элемента чекбокс просто присутствует атрибут чекед, даже без чекед="чекед", он все равно будет выбран. Как его правильно сделать нечекед?
...
Рейтинг: 0 / 0
22.12.2009, 14:12
    #36379918
Esofter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив через форму.
вот сделал

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
	function select_all()
	{
		var head_select = document.getElementById('headselect');
		
		var elems = document.getElementsByName('galka');
		for(var i =  0 ;i< elems.length;i++)
		{
			elems[i].checked = head_select.checked;
		}
	}
...
Рейтинг: 0 / 0
22.12.2009, 14:13
    #36379922
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив через форму.
EsofterВот написал, но не работает.
Значит пора тебе писать тестовый пример... Его скопипастят и помогут/подправят если надо...
...
Рейтинг: 0 / 0
22.12.2009, 14:15
    #36379928
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив через форму.
Esofter , чекет он либо труе, либо фелзе (простите за произношение )
...
Рейтинг: 0 / 0
23.12.2009, 11:39
    #36381689
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив через форму.
На jQuery:
Код: plaintext
var checkboxes = $.map($(":checkbox:checked"), function(ch){return $(this).attr("name")});
Вернет массив всех выбранных чекбоксов в документе.
...
Рейтинг: 0 / 0
23.12.2009, 18:11
    #36382973
Esofter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив через форму.
Не получается.
Вот функция которая должна собирать значения айди всех выбраных чекбоксов, лепить их в одну строку и присваивать значению элемента хиддена в форме.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
function getClients()
	{
      var elems = document.getElementsByName('galka');
      var clients = '';
      for(var i =  1 ;i< elems.length;i++)
		  {
          if(elems[i].checked)
            {
             clients=clients+elems[i].id+'*';
            }
		  }
		  alert(clients);
		  document.getElementById('array_clients').value = clients;//результат в хидден  
	}

Получается что у всех чекбоксов name="galka", id="<айди клиента>".
Делал вар_дамп пост массива, значение того хидден єлемента пустое.
Эта функция вызывается на онсабмит формы.
...
Рейтинг: 0 / 0
23.12.2009, 18:40
    #36383045
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив через форму.
EsofterНе получается.
Повторюсь...
Значит пора тебе писать тестовый пример... Его скопипастят и помогут/подправят если надо...
...
Рейтинг: 0 / 0
23.12.2009, 20:47
    #36383256
Esofter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив через форму.
krvsaEsofterНе получается.
Повторюсь...
Значит пора тебе писать тестовый пример... Его скопипастят и помогут/подправят если надо...

Ну вот например так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
<?
if($_POST)
{
  echo 'We get this string :'.$_POST['array_clients'];
}
?>
<input type = "checkbox" name = "galka" id="1" value = "checked" />
<input type = "checkbox" name = "galka" id="2" value = "checked" />
<input type = "checkbox" name = "galka" id="3" value = "checked" />
<input type = "checkbox" name = "galka" id="4" value = "checked" />
<input type = "checkbox" name = "galka" id="5" value = "checked" />

<form action="" method="post" id="frm1" name="frm1" onSubmit="getClients();">
с отмеченными:
<select size="1" name="todo" onChange = "document.forms.frm1.submit()">
    		<option value="delete">Удалить</option>
    		<option value="block">Заблокировать</option>
    		<option value="unblock">Разблокировать</option>
</select>
<input type="hidden" value="" name="array_clients" id="array_clients">
</form>

<script type="text/javascript">
	function getClients()
	{
      var elems = document.getElementsByName('galka');
      var clients = '';
      for(var i =  1 ;i< elems.length;i++)
		  {
          if(elems[i].checked)
            {
              clients=clients+elems[i].id+'*';
            }
		  }
		  alert(clients);
		  document.getElementById('array_clients').value = clients;  
	}
</script>

Сейчас приходит пустая строка в $_POST['array_clients']
...
Рейтинг: 0 / 0
23.12.2009, 21:23
    #36383291
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив через форму.
Esofter
Код: plaintext
<select size="1" name="todo" onChange = "document.forms.frm1.submit()">
Когда сабмитишь форму программно (вызывая form.submit()), то onSubmit не вызывается (он запускается по щелчку на <input type="submit">)

Можно так:
Код: plaintext
<select size="1" name="todo" onChange = "with(document.forms.frm1){onsubmit();submit();}">

зы: Да, и перебор массива начинается с 0, а не с 1.
...
Рейтинг: 0 / 0
23.12.2009, 21:33
    #36383300
Esofter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массив через форму.
Яростный МечEsofter
Код: plaintext
<select size="1" name="todo" onChange = "document.forms.frm1.submit()">
Когда сабмитишь форму программно (вызывая form.submit()), то onSubmit не вызывается (он запускается по щелчку на <input type="submit">)

Можно так:
Код: plaintext
<select size="1" name="todo" onChange = "with(document.forms.frm1){onsubmit();submit();}">

зы: Да, и перебор массива начинается с 0, а не с 1.

Понял.

зы: знаю что с нуля. просто первый чекбокс для включения-выключения всех остальных.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Массив через форму. / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]