Блокировка 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, время: 08:22. |