Блокировка 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 |
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> |
Цитата:
Твой код не работает в IE8 :no: И вобще, прочитай вопрос внимательно. |
danik.js,
ну теперь то твоя душенька довольна ? :write: <!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> |
рони, опять не работает в IE8. Сам то доволен?
Вешать клик на document, ждать onload - не гуд. Цитата:
|
greencard, делать некликабельные подписи к контролам - терроризировать пользователя )
<label><input type="checkbox" /> 1</label> |
danik.js,
:blink: <!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> |
Спасибо огромное :dance:
Я уже несколько дней голову ломал :) |
Цитата:
|
<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>:) |
Часовой пояс GMT +3, время: 21:23. |