Нужна немного нестандартная форма на Java Script!

  • Автор темы Автор темы Myborisov
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
M

Myborisov

Опять обращаюсь за помощью к данному форуму, т.к. уверен, что только тут смогут помочь...

У меня возникла срочная необходимость сделать немного нестандартную форму, которую, насколько я понял, нужно делать на Java Script.

У меня имеется следующий код формы:

Код:
Категории:<br>

<input type=checkbox name=cat value=1>Автомобили</a><br><br>
<input type=checkbox name=cat value=2>Афиша, отдых, развлечения</a><br><br>
<input type=checkbox name=cat value=3>Банки, финансы, страхование, юриспруденция </a><br><br>
<input type=checkbox name=cat value=4>Дети </a><br><br>
<input type=checkbox name=cat value=5>Животные и растения, сельское хозяйство </a><br><br>
<input type=checkbox name=cat value=6>Здоровье и красота </a><br>

<form action="registry.php" method=POST>

<input type=hidden name=cat_vybrannye value=1:2:3:4:5:6>

<input type=submit name=regbut value="Зарегить">

</form>

В вышеуказанном коде при отправке данной формы обработчику формы - внесённые данные добавляются во все категории. Т.к. value=1:2:3:4:5:6 .

Помогите, пожалуйста, сделать так, чтобы, например, при выборе(когда пользователь поставит "птички" в checkbox'ах напротив выбранных категорий) в данной форме категорий "Дети" и "Здоровье и красота" (т.е. четвертой и шестой категорий) обработчику формы передавались данные в виде
Код:
<input type=hidden name=cat_vybrannye value=4:6>

Заранее благодарен!
 
не понял.. кто мешает передавать массив?
Код:
<form action="registry.php" method=POST>

<input type=checkbox name=cat[] value=1>Автомобили</a><br><br>
<input type=checkbox name=cat[] value=2>Афиша, отдых, развлечения</a><br><br>
<input type=checkbox name=cat[] value=3>Банки, финансы, страхование, юриспруденция </a><br><br>
<input type=checkbox name=cat[] value=4>Дети </a><br><br>
<input type=checkbox name=cat[] value=5>Животные и растения, сельское хозяйство </a><br><br>
<input type=checkbox name=cat[] value=6>Здоровье и красота </a><br>
<input type=submit name=regbut value="Зарегить">

</form>
 
Для: Myborisov
описывай задачу конкретней:)
Код:
Категории:<br>
<script>
function func() {
str = "";
for (i=1; i <= 6;i++ )
{
var cat = document.getElementById(i);
if (cat.checked)
{
str += cat.value + ":";
} 
}
str = str.substr(0,str.length - 1 );
cat_vybrannye = document.getElementById('cat_vybrannye');
cat_vybrannye.value = str;
alert(cat_vybrannye.value);

}
</script>
<input type=checkbox name=cat value=1 id=1 onclick="func()">Автомобили</a><br><br>
<input type=checkbox name=cat value=2 id=2 onclick="func()">Афиша, отдых, развлечения</a><br><br>
<input type=checkbox name=cat value=3 id=3 onclick="func()">Банки, финансы, страхование, юриспруденция </a><br><br>
<input type=checkbox name=cat value=4 id=4 onclick="func()">Дети </a><br><br>
<input type=checkbox name=cat value=5 id=5 onclick="func()">Животные и растения, сельское хозяйство </a><br><br>
<input type=checkbox name=cat value=6 id=6 onclick="func()">Здоровье и красота </a><br>

<form action="registry.php" method=POST>

<input type=hidden id=cat_vybrannye name=cat_vybrannye value=1:2:3:4:5:6>

<input type=submit name=regbut value="Зарегить">

</form>
 
хе наверно это из-за масленницы у модераторов такая солидарность и помощь мемберам:):P
 
Для: Gisma
Зачем такой гемморой? Всего-то надо передать масси чекбоксов
 
<!--QuoteBegin-Gisma+5:03:2006, 14:57 -->
<span class="vbquote">(Gisma @ 5:03:2006, 14:57 )</span><!--QuoteEBegin-->Для: Myborisov
описывай задачу конкретней:)
Код:
Категории:<br>
<script>
function func() {
str = "";
for (i=1; i <= 6;i++ )
{
 var cat = document.getElementById(i);
 if (cat.checked)
 {
 	str += cat.value + ":";
 } 
}
str = str.substr(0,str.length - 1 );
cat_vybrannye = document.getElementById('cat_vybrannye');
cat_vybrannye.value = str;
alert(cat_vybrannye.value);

}
</script>
<input type=checkbox name=cat value=1 id=1 onclick="func()">Автомобили</a><br><br>
<input type=checkbox name=cat value=2 id=2 onclick="func()">Афиша, отдых, развлечения</a><br><br>
<input type=checkbox name=cat value=3 id=3 onclick="func()">Банки, финансы, страхование, юриспруденция </a><br><br>
<input type=checkbox name=cat value=4 id=4 onclick="func()">Дети </a><br><br>
<input type=checkbox name=cat value=5 id=5 onclick="func()">Животные и растения, сельское хозяйство </a><br><br>
<input type=checkbox name=cat value=6 id=6 onclick="func()">Здоровье и красота </a><br>

<form action="registry.php" method=POST>

<input type=hidden id=cat_vybrannye name=cat_vybrannye value=1:2:3:4:5:6>

<input type=submit name=regbut value="Зарегить">

</form>
[snapback]31461" rel="nofollow" target="_blank[/snapback]​
[/quote]


Спасибо всем за отзывчивость!

А в приведённом выше примере всё правильно? Просто с первого взгляда - параметр name=cat_vybrannye в форме осталось со значением value=1:2:3:4:5:6 , а нужно чтобы передавалось значение value= а дальше выбранные категории через двоеточие...
 
Для: Andrew Stephanoff
ессно массивом гораздо проще, но как видишь мы не ищем легких путей :P :P :P Для: Myborisov
извини плохо понял... вроде все правильно как ты и говорил:)
 
<!--QuoteBegin-Gisma+5:03:2006, 17:43 -->
<span class="vbquote">(Gisma @ 5:03:2006, 17:43 )</span><!--QuoteEBegin-->Для: Andrew Stephanoff
ессно массивом гораздо проще, но как видишь мы не ищем легких путей :P :P :P Для: Myborisov
извини плохо понял... вроде все правильно как ты и говорил:)
[snapback]31465" rel="nofollow" target="_blank[/snapback]​
[/quote]

Я попробовал использовать Ваш пример - но он не работает. Вернее работает, как и форма до использования Java Script

Дело в том, если вставить Ваш пример и заподнить полученную форму - то если пользователь отмечает только категории "Автомобили", "Животные и растения, сельское хозяйство" и "Афиша, отдых, развлечения" - то вместо того, чтобы данные добавились только в эти выбранные категории, они добавляются во все шесть категорий. Это оттого, что в строке
Код:
<input type=hidden id=cat_vybrannye name=cat_vybrannye value=1:2:3:4:5:6>
, т.е. данные идут во все категории.
А нужно чтобы после выбора категорий "Автомобили", "Животные и растения, сельское хозяйство" и "Афиша, отдых, развлечения" параметр с id=cat_vybrannye принял следующий вид:

Код:
<input type=hidden id=cat_vybrannye name=cat_vybrannye value=1:2:5>

Т.е. в зависимости от количества и вида выбранных категорий изменялось значение value параметра с id=cat_vybrannye

Уфф.. Вроде немного получше объяснил... :-)

Помогите, плиз!
 
а вот это нафига вставлять?
HTML:
<input type=hidden id=cat_vybrannye name=cat_vybrannye value=1:2:3:4:5:6>
надо
HTML:
<form action="registry.php" method="POST">
<input type="checkbox" name="cat[]" value="1">Автомобили<br>
<input type="checkbox" name="cat[]" value="2">Афиша, отдых, развлечения<br>
<input type="checkbox" name="cat[]" value="3">Банки, финансы, страхование, юриспруденция<br>
<input type="checkbox" name="cat[]" value="4">Дети<br>
<input type="checkbox" name="cat[]" value="5">Животные и растения, сельское хозяйство<br>
<input type="checkbox" name="cat[]" value="6">Здоровье и красота<br>
<input type="submit" value="Зарегить">
</form>
и больше Н_И_Ч_Е_Г_О
в скрипт должен попасть массив $cat с выбранными чекбоксами, например
Код:
$cat = array(
 0 => "1",
 1 => "2",
 2 => "5"
);
P.S. Вспомнил анекдот про секс в гамаке :)
P.P.S. была ошика с ключами массива, поправил
 
Не, ну если очень надо, то можно в скрипте написать
Код:
$cat_vybrannye = implode(":", $cat);
 
если очень надо javascript
Код:
<div id="controls">
<input type="checkbox" name="cat[]" value="1">Автомобили<br>
<input type="checkbox" name="cat[]" value="2">Афиша, отдых, развлечения<br>
<input type="checkbox" name="cat[]" value="3">Банки, финансы, страхование, юриспруденция<br>
<input type="checkbox" name="cat[]" value="4">Дети<br>
<input type="checkbox" name="cat[]" value="5">Животные и растения, сельское хозяйство<br>
<input type="checkbox" name="cat[]" value="6">Здоровье и красота
</div>
<form id="frmTest" action="registry.php" method="POST" onsubmit="javascript:return false;">
<input type="hidden" id="result" name="cat_vybrannye" />
<input type="submit" value="Зарегить" onclick="send();'>
</form>

<script type="text/javascript">
function send() {
var aInputs = document.getElementById("controls").getElementsByTagName("INPUT");
var result = [];
for (var i = 0, count = aInputs.length; i < count; i ++) {
 if (aInputs[i].type == "checkbox" && aInputs[i].checked) {
  result[result.length] = aInputs[i].value;
 }
}
result = result.join(":");
document.getElementById("result").value = result;
document.getElementById("frmTest").submit();
}
</script>
 
Спасибо большое вам, ребята, за помощь!

Последний вариант оказался тем, что надо!

Уже второй раз меня выручает ваш форум. Thanks! :)
 
И все-таки, почему нельзя просто передать массив? Почему именно javascript?
 
<!--QuoteBegin-Andrew Stephanoff+6:03:2006, 09:40 -->
<span class="vbquote">(Andrew Stephanoff @ 6:03:2006, 09:40 )</span><!--QuoteEBegin-->И все-таки, почему нельзя просто передать массив? Почему именно javascript?
[snapback]31479" rel="nofollow" target="_blank[/snapback]​
[/quote]

У меня такой скрипт (писанный не мною), что нужно, чтобы в параметре cat_vybrannye передавалось значение - именно перечисление номеров рубрик через двоеточие...
 
<!--QuoteBegin-Andrew Stephanoff+6:03:2006, 16:47 -->
<span class="vbquote">(Andrew Stephanoff @ 6:03:2006, 16:47 )</span><!--QuoteEBegin-->Кто-то отменил implode() ?
[snapback]31495" rel="nofollow" target="_blank[/snapback]​
[/quote]

Если честно - я даже не знаю о чём Вы говорите, т.к. абсолютно не знаю JavaScript.

Просто у меня возникла необходимость сделать страницу регистрации, где пользователь отмечает категории, в которые добавить свои данные, и номера категорий передаются скрипту через двоеточие. А скрипт уже обработав полученные данные (например: 2:4:11:48:67 и т.д.), помещает данные пользователя в перечисленные рубрики.

Если Вы знаете, как это можно сделать другим способом, а не таким, как Вы выше это сделали - подскажите, пожалуйста.
 
внимательно прочитай посты что выше писали ...:)
 
Я же писал..
HTML:
<form action="registry.php" method="POST">
<input type="checkbox" name="cat[]" value="1">Автомобили<br>
<input type="checkbox" name="cat[]" value="2">Афиша, отдых, развлечения<br>
<input type="checkbox" name="cat[]" value="3">Банки, финансы, страхование, юриспруденция<br>
<input type="checkbox" name="cat[]" value="4">Дети<br>
<input type="checkbox" name="cat[]" value="5">Животные и растения, сельское хозяйство<br>
<input type="checkbox" name="cat[]" value="6">Здоровье и красота<br>
<input type="submit" value="Зарегить">
</form>
и в скрипт-обработчик добавить
Код:
$cat = $_POST["cat"];
$cat_vybrannye = implode(":", $cat);
 
<!--QuoteBegin-Andrew Stephanoff+6:03:2006, 22:55 -->
<span class="vbquote">(Andrew Stephanoff @ 6:03:2006, 22:55 )</span><!--QuoteEBegin-->Я же писал..[/quote]

Пасиба! Сегодня вечером попробую так сделать...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!