Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите разобраться с чекбоксом 
V
    Опции темы
AleksandrIII
Дата 25.3.2008, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 6.12.2007

Репутация: нет
Всего: нет



сразу скажу с ява скриптом я не в ладах вообщем мне нужно сделать фичу для голосовалки т.е. так: 
у меня 6 ответов на вопрос т.е. 6 чекбоксов при этом можно выбрать из них 6-1 = 5 ответов т.е. при выборе 6го ответа один из двух выбранных становился checked = false

вот то что есть

Код

 <script>
                              var last = 0;
                              function uncheckAll() {
                                   for (var j = 1; j <= 6; j++) {
                                        box = eval("document.choice_form.p" + j);
                                        if (box.checked == true) box.checked = false;
                                   }
                                   if (last > 0){
                                        box = eval("document.choice_form.p" + last);
                                        if (box.checked == false) box.checked = true;
                                   }
                              }
                              function check(j){
                                   uncheckAll();
                                   last = j;
                                   box = eval("document.choice_form.p" + j);
                                   if (box.checked == false) box.checked = true;
                              }
</script>




Код

<form action="/choice.html" name="choice_form" method="POST">
                                   <input type="checkbox" name="p1" id="p1" onclick="javascript:check(1)"><label for="p1"><b>Ротонда (1)</b></label><br>
                                   <input type="checkbox" name="p2" id="p2" onclick="javascript:check(2)"><label for="p2"><b>Драмтеатр (2)</b></label><br>
                                   <input type="checkbox" name="p3" id="p3" onclick="javascript:check(3)"><label for="p3"><b>Музей им. Васнецовых (3)</b></label><br>
                                   <input type="checkbox" name="p4" id="p4" onclick="javascript:check(4)"><label for="p4"><b>Диорама (4)</b></label><br>
                                   <input type="checkbox" name="p5" id="p5" onclick="javascript:check(5)"><label for="p5"><b>Особняк купца Булычева (5)</b></label><br>
                                   <input type="checkbox" name="p6" id="p6" onclick="javascript:check(6)"><label for="p6"><b>Ротонда (6)</b></label><br>
</form>


Это сообщение отредактировал(а) AleksandrIII - 25.3.2008, 14:22
PM MAIL   Вверх
ksnk
Дата 25.3.2008, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Может лучше, при выборе 5-го ответа 6-й автоматически становиться disabled? Imho, логичнее...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
AleksandrIII
Дата 25.3.2008, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 6.12.2007

Репутация: нет
Всего: нет



ну да можно и так  smile 
PM MAIL   Вверх
ksnk
Дата 25.3.2008, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Код

<script>
function check(el){ // check 5 checkbox
    var cnt=0, MaxCheckbox=5;    
    var ar=el.form.getElementsByTagName('input');
    for(var i=0;i<ar.length;i++){ 
        var ii=ar[i];
        if(ii.type=='checkbox') {
            if (ii.checked) cnt++;
        } else 
            delete(ar[i]) ;
    }
    for(var i=0;i<ar.length;i++){ 
        var ii=ar[i];
        if (!ii.checked) ii.disabled=cnt>=MaxCheckbox?'disabled':'';
    }
};
</script>

<form action="/choice.html" name="choice_form" method="POST">
                                   <input type="checkbox" name="p1" id="p1" onclick="javascript:check(this)"><label for="p1"><b>Ротонда (1)</b></label><br>
                                   <input type="checkbox" name="p2" id="p2" onclick="javascript:check(this)"><label for="p2"><b>Драмтеатр (2)</b></label><br>
                                   <input type="checkbox" name="p3" id="p3" onclick="javascript:check(this)"><label for="p3"><b>Музей им. Васнецовых (3)</b></label><br>
                                   <input type="checkbox" name="p4" id="p4" onclick="javascript:check(this)"><label for="p4"><b>Диорама (4)</b></label><br>
                                   <input type="checkbox" name="p5" id="p5" onclick="javascript:check(this)"><label for="p5"><b>Особняк купца Булычева (5)</b></label><br>
                                   <input type="checkbox" name="p6" id="p6" onclick="javascript:check(this)"><label for="p6"><b>Ротонда (6)</b></label><br>
</form>



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
A1ekcandr
Дата 25.3.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 27.6.2007

Репутация: нет
Всего: 1



спасибо в отдельной странице работает а когда вставляю в шаблон то нет, проблемы случайно не может быть из-за того что на страницемогут быть другие формы и элементы инпут? ну думаю разберусь огромное спасибо плюсик поставлю как наберу 100 постов

Это сообщение отредактировал(а) A1ekcandr - 25.3.2008, 15:33
PM MAIL   Вверх
ksnk
Дата 25.3.2008, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



только 5 checkbox'ов в одной форме могут быть выбраны. количество форм не должно иметь значение.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
A1ekcandr
Дата 25.3.2008, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 27.6.2007

Репутация: нет
Всего: 1



ок все работает на 100% еще раз спасибо
PM MAIL   Вверх
ksnk
Дата 25.3.2008, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Возможно, подглюкивает на формах с большим количествой других input'ов. delete не надо было делать...
Вот так - лучше
Код

function check(el){ // check 5 checkbox
    var cnt=0,i, MaxCheckbox=5,   
        ar=el.form.getElementsByTagName('input'),d=[];
    for(i=0;i<ar.length;i++) 
        if(ar[i].type=='checkbox') 
            if (ar[i].checked)
                cnt++;
            else
                d.push(ar[i]);
    for(i=0;i<d.length;i++) 
        d[i].disabled=cnt>=MaxCheckbox?'disabled':'';
};



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
A1ekcandr
Дата 25.3.2008, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 27.6.2007

Репутация: нет
Всего: 1



етот вариант лучше тк у меня до этого дисаблился сабмит и приходилось делать так:
Код

</form><input type="submit" value="голосовать" onclick="document.getElementById('my_form').submit(); return false;">


Это сообщение отредактировал(а) A1ekcandr - 25.3.2008, 17:07
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0557 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.