Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.02.2014, 12:45
Интересующийся
Отправить личное сообщение для greencard Посмотреть профиль Найти все сообщения от greencard
 
Регистрация: 04.07.2013
Сообщений: 18

Блокировка checkbox
Здравствуйте, подскажите, как решить такую задачу.
Есть n checkboxов и несколько классов.
Нужно, чтоб при нажатии на checkbox блокировались checkboxы с другими классами

<input type="checkbox" name="ck[]" class="test" value="1">1
<input type="checkbox" name="ck[]" class="tovary" value="2" >2 
<input type="checkbox" name="ck[]" class="test" value="3">3
<input type="checkbox" name="ck[]" class="tovary" value="3" >3
Ответить с цитированием
  #2 (permalink)  
Старый 14.02.2014, 13:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

greencard,

<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script>
  window.onload = function () {
    var ck =  document.querySelectorAll('[name="ck[]"]');
    document.onclick = function (a) {
        a = a.target || window.event.srcElement;
       if(a.name == "ck[]") {
         for (var i=0; i<ck.length; i++) {
          ck[i].disabled =  ck[i] != a ? a.checked : false
  		}
       }
    }
  }
</script>
</head>
<body>
<input type="checkbox" name="ck[]" class="test" value="1"  >1
<input type="checkbox" name="ck[]" class="tovary" value="2" >2
<input type="checkbox" name="ck[]" class="test" value="3">3
<input type="checkbox" name="ck[]" class="tovary" value="3" >3
</body>
 </html>
Ответить с цитированием
  #3 (permalink)  
Старый 14.02.2014, 13:10
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от рони
function (a) {
        a = a.target || window.event.srcElement;
рони, опять за свое?
Твой код не работает в IE8
И вобще, прочитай вопрос внимательно.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #4 (permalink)  
Старый 14.02.2014, 13:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

danik.js,
ну теперь то твоя душенька довольна ?
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script>
  window.onload = function () {
    document.onclick = function (e) {
       var target = e && e.target || event.srcElement;
       if(target.name == "ck[]") {
         var ck =  document.querySelectorAll('.'+target.className),
         disabled = false;
         for (var i=0; i<ck.length; i++) {
         if(ck[i].checked)  {disabled=true; break}
  		}
         ck =  document.querySelectorAll('[name="ck[]"]:not(.'+target.className+')')
         for (var i=0; i<ck.length; i++) {
          ck[i].disabled = disabled
  		}
       }
    }
  }
</script>
</head>
<body>
<input type="checkbox" name="ck[]" class="test" value="1"  >1
<input type="checkbox" name="ck[]" class="tovary" value="2" >2
<input type="checkbox" name="ck[]" class="test" value="3">3
<input type="checkbox" name="ck[]" class="tovary" value="3" >3
</body>
 </html>
Ответить с цитированием
  #5 (permalink)  
Старый 14.02.2014, 13:37
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

рони, опять не работает в IE8. Сам то доволен?
Вешать клик на document, ждать onload - не гуд.
Сообщение от Poznakomlus
el.checked && inp.className != el.className ? true: false
Зачем усложнять? Просто el.checked && inp.className != el.className - это выражение само по себе вернет true или false
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #6 (permalink)  
Старый 14.02.2014, 13:40
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

greencard, делать некликабельные подписи к контролам - терроризировать пользователя )
<label><input type="checkbox" /> 1</label>
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 14.02.2014, 13:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

danik.js,

<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script>
    document.onclick = function (e) {
       var target = e && e.target || event.srcElement;
       if(target.name == "ck[]") {
         var ck =  document.getElementsByName('ck[]'),
         disabled = false;
         for (var i=0; i<ck.length; i++) {
         if(ck[i].checked && target.className == ck[i].className)  {disabled=true; break}
  		}
         for (var i=0; i<ck.length; i++) {
          if(target.className != ck[i].className) ck[i].disabled = disabled
  		}
       }
    }
</script>
</head>
<body>
<label><input type="checkbox" name="ck[]" class="test" value="1"  >1</label>
<label><input type="checkbox" name="ck[]" class="tovary" value="2" >2</label>
<label><input type="checkbox" name="ck[]" class="test" value="3">3</label>
<label><input type="checkbox" name="ck[]" class="tovary" value="3" >3</label>
</body>
 </html>
Ответить с цитированием
  #8 (permalink)  
Старый 14.02.2014, 14:00
Интересующийся
Отправить личное сообщение для greencard Посмотреть профиль Найти все сообщения от greencard
 
Регистрация: 04.07.2013
Сообщений: 18

Спасибо огромное
Я уже несколько дней голову ломал
Ответить с цитированием
  #9 (permalink)  
Старый 14.02.2014, 14:01
Интересующийся
Отправить личное сообщение для greencard Посмотреть профиль Найти все сообщения от greencard
 
Регистрация: 04.07.2013
Сообщений: 18

Сообщение от danik.js Посмотреть сообщение
greencard, делать некликабельные подписи к контролам - терроризировать пользователя )
<label><input type="checkbox" /> 1</label>
Спасибо, я учту
Ответить с цитированием
  #10 (permalink)  
Старый 14.02.2014, 14:02
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

<div id="block">
  <input type="checkbox" name="ck[]" class="test" value="1">1
  <input type="checkbox" name="ck[]" class="tovary" value="2">2
  <input type="checkbox" name="ck[]" class="test" value="3">3
  <input type="checkbox" name="ck[]" class="tovary" value="3">3</div>
<script>
  block.onclick = function (e) {
    var el = e ? e.target : window.event.srcElement;
    if (el.tagName != "INPUT") return;
    var inps = this.getElementsByTagName('input'),
      len = inps.length,
      len1 = len,
      check = false,
      inp;
    for (; len--;) {
      if (inps[len].checked) {
        check = true;
        break;
      }
    }
    for (; len1--;) {
      inp = inps[len1];
      inp.disabled = check && inp.className != el.className;
    }
  };
</script>

Последний раз редактировалось Vlasenko Fedor, 14.02.2014 в 14:33.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
checkbox check если значение input djonA Общие вопросы Javascript 8 14.01.2014 06:44
checkbox = checkbox Слейп jQuery 2 30.01.2013 15:24
Не могу получить состояние checkbox-а POMAH-UST Элементы интерфейса 2 08.10.2012 07:43
jqgrid tree and checkbox gaz2003 jQuery 0 17.12.2011 15:59
Функция disable для нескольких checkbox allforweb Элементы интерфейса 4 19.12.2010 17:51