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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Голосование по баллам на checkbox-ах, Как блокировать checkbox не только... 
:(
    Опции темы
acdcee
Дата 22.2.2008, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Много тем нашел по этому поводу есть и пример тока не такой, как мне нужен был. И так вопрос вот такой:
У меня есть голосование. К пример  есть 48 участников, из 48 нужно выбрать 5 и дать баллы эим пятерым т.е есть 5 кандидатов и баллы ставятся от 5 до 1. Т.е есть любимый к примеру диджей и четыре так себе.
У меня получилось сделать так что бы при выборе из 5 баллов 1 все поля блакировались, а так что бы следующиму из 48 нужно было бы поставить тока 4 или 3 или 2 или 1 не получается. Блокируется первый из 48 выбранный блок input и все 5 а когда в других ставишь 4 то блакировки нет. Т.е если я первый раз из 48 выбираю и ставлю или 5 или 4 или 3 или 2 или 1 то блакируется все 5 в этом блоке. 
А как сделать так что бы при выборе в N  блоке одного из баллов блокировались такое же input  в других блоках?????

Код

<span id="votingTool1">
<input type="checkbox" id="Checked5" value="1">5 value это id в БД участника передается в hidden для передаче через POST потому как когда блакирется checkbox то с него нельзя ничего передать.
<input type="checkbox" id="Checked4" value="1">4
<input type="checkbox" id="Checked3" value="1">3
<input type="checkbox" id="Checked2" value="1">2
<input type="checkbox" id="Checked1" value="1">1
</span>

<span id="votingTool2">
<input type="checkbox" id="Checked5" value="2">5 значение value это id в БД участника передается в hidden для передаче через POST потому как когда блакирется checkbox то с него нельзя ничего передать.
<input type="checkbox" id="Checked4" value="2">4
<input type="checkbox" id="Checked3" value="2">3
<input type="checkbox" id="Checked2" value="2">2
<input type="checkbox" id="Checked1" value="2">1
</span>

<span id="votingTool3">
<input type="checkbox" id="Checked5" value="3">5 value это id в БД участника передается в hidden для передаче через POST потому как когда блакирется checkbox то с него нельзя ничего передать.
<input type="checkbox" id="Checked4" value="3">4
<input type="checkbox" id="Checked3" value="3">3
<input type="checkbox" id="Checked2" value="3">2
<input type="checkbox" id="Checked1" value="3">1
</span>

<span id="votingTool4">
<input type="checkbox" id="Checked5" value="4">5 value это id в БД участника передается в hidden для передаче через POST потому как когда блакирется checkbox то с него нельзя ничего передать.
<input type="checkbox" id="Checked4" value="4">4
<input type="checkbox" id="Checked3" value="4">3
<input type="checkbox" id="Checked2" value="4">2
<input type="checkbox" id="Checked1" value="4">1
</span>

<span id="votingTool5">
<input type="checkbox" id="Checked5" value="5">5 value это id в БД участника передается в hidden для передаче через POST потому как когда блакирется checkbox то с него нельзя ничего передать.
<input type="checkbox" id="Checked4" value="5">4
<input type="checkbox" id="Checked3" value="5">3
<input type="checkbox" id="Checked2" value="5">2
<input type="checkbox" id="Checked1" value="5">1
</span>
<script>
    var nodeSel = 5;//Это количество блоков передается дальше скрипту
</script>


Код

var formObj = document.forms['VotingsConfirm'];

function selCheckboxes(n)
{
    var K = 1;//один раз выбрать бал из блока input
    var S_Select = 0;
    var blocked  = false;
    var ns       = 0;
    
    var inputs = document.getElementById('votingTool'+n).getElementsByTagName("input")
    for (var i = 0; i < inputs.length; i++) {
        var m = parseInt(formObj.elements['score'].value);
        var input  = inputs.item(i);
        
        if (input.getAttribute("type") != "checkbox") {
            continue;
        }
        if (input.checked) {
            
            S_Select++;
        }
        input.onclick = (
        
            function(e) {
                if (this.checked) {
                    var ns = i;
                    
                     m = m+1;
                    alert(m);
                    document.getElementById('modSection').value += this.value;
                    
                    S_Select++;
                } else {
                    S_Select--;
                }
                getBlock();
                return true;
            }
        );
    }
    getBlock();
    function getBlock() {
        
        var dis = (S_Select >= K);
        if ((dis && blocked) || ((!dis) && (!blocked))) {
            return true;
        }
        blocked = dis;
        for (var i = 0; i < inputs.length; i++) {
            var input = inputs.item(i);
            if ((input.getAttribute("type") == "checkbox") && (!input.checked)) {
                input.disabled = dis;
            }
        }
        return true;
    }
}

for(i=1;i<=nodeSel;i++)
{
    eval('selCheckboxes('+i+');');
}



Можете что нить подскачать по этому поводу ???  smile  smile 
Я себе уже голову ап стену сламал  smile 
PM MAIL   Вверх
Itsys
Дата 22.2.2008, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

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



Зачем такие сложности?

Код

var formObj = document.forms['VotingsConfirm'];

function check(){
   var voites = new Array;
   for (var k = 1; k <= nodeSel ; k++) {
      var inputs = document.getElementById('votingTool'+k).getElementsByTagName("input");
      for (var i = 0; i < inputs.length; i++) {
         var input  = inputs.item(i);
         if ((input.getAttribute("type") == "checkbox") && (input.checked)) {
            if  (!voites[input.id.substr(7, 1)]){
                 voites[input.id.substr(7, 1)] = 1;
            }
         }
      }
   }
   for (var k = 1; k <= nodeSel ; k++) {
      var inputs = document.getElementById('votingTool'+k).getElementsByTagName("input");
      for (var i = 0; i < inputs.length; i++) {
         var input  = inputs.item(i);
         if ((input.getAttribute("type") == "checkbox") && (input.checked)) {
            if  (!voites[input.id.substr(7, 1)]){
                 voites[input.id.substr(7, 1)] = 1;
            }
         }
         if ((input.getAttribute("type") == "checkbox") && (!input.checked)) {
            if  (voites[input.id.substr(7, 1)]){
                 input.disabled = true;
            }
            else{
                 input.disabled = false;
            }
         }
      }
   }
}

PM MAIL WWW Skype   Вверх
acdcee
Дата 22.2.2008, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Примного очень много благодарен выручили.... Сегодня просто устанавливать надо уже это голосование. А на счет зачем все так сложно такая вот у директора задумка!  smile 
PM MAIL   Вверх
acdcee
Дата 22.2.2008, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня вот еще один вопрос. А как вот из того что есть:
Код

var formObj = document.forms['VotingsConfirm'];

function check(){
   var voites = new Array;
   for (var k = 1; k <= nodeSel ; k++) {
      var inputs = document.getElementById('votingTool'+k).getElementsByTagName("input");
      for (var i = 0; i < inputs.length; i++) {
         var input  = inputs.item(i);
         if ((input.getAttribute("type") == "checkbox") && (input.checked)) {
            if  (!voites[input.id.substr(7, 1)]){
                 voites[input.id.substr(7, 1)] = 1;
            }
         }
      }
   }
   for (var k = 1; k <= nodeSel ; k++) {
      var inputs = document.getElementById('votingTool'+k).getElementsByTagName("input");
      for (var i = 0; i < inputs.length; i++) {
         var input  = inputs.item(i);
         if ((input.getAttribute("type") == "checkbox") && (input.checked)) {
            if  (!voites[input.id.substr(7, 1)]){
                 voites[input.id.substr(7, 1)] = 1;
            }
         }
         if ((input.getAttribute("type") == "checkbox") && (!input.checked)) {
            if  (voites[input.id.substr(7, 1)]){
                 input.disabled = true;
            }
            else{
                 input.disabled = false;
            }
         }
      }
   }
}


Сделать так что бы по мимо того что блокируются checkbox-ы в зависимости от выбранного т.е если 5 тогда и в других 5, но вот если я кликнул 5 то в этом блоке заблокировались все 5 а в других тока те которые здесь выбранны???? 

Я сделал что в одном блокируется а вот в других не хочет  smile  smile Помогите здесь разобратся  smile  smile 
PM MAIL   Вверх
Itsys
Дата 22.2.2008, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

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



Код

<script>
var formObj = document.forms['VotingsConfirm'];

function check(){
   var voites = new Array;
   var persons = new Array;
   for (var k = 1; k <= nodeSel ; k++) {
      persons[k] = 0;
      var inputs = document.getElementById('votingTool'+k).getElementsByTagName("input");
      for (var i = 0; i < inputs.length; i++) {
         var input  = inputs.item(i);
         input.disabled = false;
         if ((input.getAttribute("type") == "checkbox") && (input.checked)) {
            persons[k] = 1;
            if  (!voites[input.id.substr(7, 1)]){
                 voites[input.id.substr(7, 1)] = 1;
            }
         }
      }
   }
   for (var k = 1; k <= nodeSel ; k++) {
      var inputs = document.getElementById('votingTool'+k).getElementsByTagName("input");
      for (var i = 0; i < inputs.length; i++) {
         var input  = inputs.item(i);
         if ((persons[k])  && (!input.checked)) {
            input.disabled = true;
         }
         else if ((input.getAttribute("type") == "checkbox") && (!input.checked)) {
            if  (voites[input.id.substr(7, 1)]){
                 input.disabled = true;
            }
         }
      }
   }
}
</script>


PM MAIL WWW Skype   Вверх
acdcee
Дата 22.2.2008, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасиба  smile 
PM MAIL   Вверх
Ghirik
Дата 22.2.2008, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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