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

Тема в разделе "HTML, CSS, XML, JavaScript", создана пользователем Myborisov, 5 мар 2006.

Статус темы:
Закрыта.
  1. Myborisov

    Myborisov Гость

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

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

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

    Код (Text):
    Категории:<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'ах напротив выбранных категорий) в данной форме категорий "Дети" и "Здоровье и красота" (т.е. четвертой и шестой категорий) обработчику формы передавались данные в виде
    Код (Text):
    <input type=hidden name=cat_vybrannye value=4:6>
    Заранее благодарен!
     
  2. Andrew Stephanoff

    Andrew Stephanoff Гость

    не понял.. кто мешает передавать массив?
    Код (Text):
    <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>
     
  3. Gisma

    Gisma Гость

    Для: Myborisov
    описывай задачу конкретней:)
    Код (Text):
    Категории:<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>
     
  4. Gisma

    Gisma Гость

    хе наверно это из-за масленницы у модераторов такая солидарность и помощь мемберам:):p
     
  5. Andrew Stephanoff

    Andrew Stephanoff Гость

    Для: Gisma
    Зачем такой гемморой? Всего-то надо передать масси чекбоксов
     
  6. Myborisov

    Myborisov Гость

    <!--QuoteBegin-Gisma+5:03:2006, 14:57 -->
    <span class="vbquote">(Gisma @ 5:03:2006, 14:57 )</span><!--QuoteEBegin-->Для: Myborisov
    описывай задачу конкретней:)
    Код (Text):
    Категории:<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= а дальше выбранные категории через двоеточие...
     
  7. Gisma

    Gisma Гость

    Для: Andrew Stephanoff
    ессно массивом гораздо проще, но как видишь мы не ищем легких путей :p :p :p Для: Myborisov
    извини плохо понял... вроде все правильно как ты и говорил:)
     
  8. Myborisov

    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

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

    Код (Text):
    <input type=hidden id=cat_vybrannye name=cat_vybrannye value=1:2:5>
    Т.е. в зависимости от количества и вида выбранных категорий изменялось значение value параметра с id=cat_vybrannye

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

    Помогите, плиз!
     
  9. Andrew Stephanoff

    Andrew Stephanoff Гость

    а вот это нафига вставлять?
    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 с выбранными чекбоксами, например
    Код (Text):
    $cat = array(
     0 => "1",
     1 => "2",
     2 => "5"
    );
    P.S. Вспомнил анекдот про секс в гамаке :)
    P.P.S. была ошика с ключами массива, поправил
     
  10. Gisma

    Gisma Гость

    мде... :)
     
  11. Andrew Stephanoff

    Andrew Stephanoff Гость

    Не, ну если очень надо, то можно в скрипте написать
    Код (Text):
    $cat_vybrannye = implode(":", $cat);
     
  12. Andrew Stephanoff

    Andrew Stephanoff Гость

    если очень надо javascript
    Код (Text):
    <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>
     
  13. Myborisov

    Myborisov Гость

    Спасибо большое вам, ребята, за помощь!

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

    Уже второй раз меня выручает ваш форум. Thanks! :)
     
  14. Andrew Stephanoff

    Andrew Stephanoff Гость

    И все-таки, почему нельзя просто передать массив? Почему именно javascript?
     
  15. Myborisov

    Myborisov Гость

    <!--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 передавалось значение - именно перечисление номеров рубрик через двоеточие...
     
  16. Andrew Stephanoff

    Andrew Stephanoff Гость

    Кто-то отменил implode() ?
     
  17. Myborisov

    Myborisov Гость

    <!--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 и т.д.), помещает данные пользователя в перечисленные рубрики.

    Если Вы знаете, как это можно сделать другим способом, а не таким, как Вы выше это сделали - подскажите, пожалуйста.
     
  18. Gisma

    Gisma Гость

    внимательно прочитай посты что выше писали ...:)
     
  19. Andrew Stephanoff

    Andrew Stephanoff Гость

    Я же писал..
    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>
    и в скрипт-обработчик добавить
    Код (Text):
    $cat = $_POST["cat"];
    $cat_vybrannye = implode(":", $cat);
     
  20. Myborisov

    Myborisov Гость

    <!--QuoteBegin-Andrew Stephanoff+6:03:2006, 22:55 -->
    <span class="vbquote">(Andrew Stephanoff @ 6:03:2006, 22:55 )</span><!--QuoteEBegin-->Я же писал..[/quote]

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

Поделиться этой страницей