Jump to content
  • 0

Checkbox'ы и свойство disabled


Mostom
 Share

Question

Господа, прошу вас помочь мне!

Есть некоторое конечное множество checkbox'ов. Нужно, чтобы при выборе 2-х checkbox'ов остальные (невыбранные) становились disabled. Если же снять выбор хотя бы с одного выбранного checkbox'а, то все checkbox'ы вновь становились бы enabled.

Спасибо, надеюсь, что объяснил понятно.

Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0
Занятно ... Еще я не могу давать им имена и id.

Не надо бояться, надо брать и делать! Давать им id тебе придется однозначно!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>
<head>
<title>Untitled</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<script language="JavaScript" type="text/javascript">
<!--
function hide(data)
{
arr = new Array();
arr[0] = 1;
for(i = 0; i<data.length; i++)
{
param = 'ch'+data[i];
if(document.getElementById(param).disabled)
document.getElementById(param).disabled = false;
else
document.getElementById(param).disabled = true;
}
}
//-->
</script>

</head>

<body>
<div>

<p><input type="Checkbox" onClick="data = new Array('1', '2'); hide(data);" id="ch0" />блок 1, 2</p>
<p><input type="Checkbox" id="ch1" />1</p>
<p><input type="Checkbox" id="ch2" />2</p>
<p><input type="Checkbox" onClick="data = new Array('4', '5', '6'); hide(data);" id="ch3" />блок 4, 5, 6.</p>
<p><input type="Checkbox" id="ch4" />4</p>
<p><input type="Checkbox" id="ch5" />5</p>
<p><input type="Checkbox" id="ch6" />6</p>

</div>

</body>
</html>

Link to comment
Share on other sites

  • 0
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">

<title>Test Page...</title>

<script type="text/javascript">
function funcClick (){

for (var R = 0, x = document.forms.lixme, j = 0; j < x.elements.length; j++)

if (x.elements [j].type == 'checkbox' && x.elements [j].checked) R++;

if (R == 2) { // количество отмеченых чекбоксов

for (j = 0; j < x.elements.length; j++)

if (x.elements [j].type == 'checkbox' && !x.elements [j].checked) x.elements [j].disabled = 1
}
else for (j = 0; j < x.elements.length; j++)

if (x.elements [j].type == 'checkbox') x.elements [j].disabled = 0;

}
</script>
</head>
<body>
<form name="lixme">
<input type="checkbox" onClick="setTimeout (funcClick, 0)">
<input type="checkbox" onClick="setTimeout (funcClick, 0)">
<input type="checkbox" onClick="setTimeout (funcClick, 0)">
<input type="checkbox" onClick="setTimeout (funcClick, 0)">
<input type="checkbox" onClick="setTimeout (funcClick, 0)">
<input type="checkbox" onClick="setTimeout (funcClick, 0)">
<input type="checkbox" onClick="setTimeout (funcClick, 0)">

</body>
</html>

Link to comment
Share on other sites

  • 0

Решил сделать тоже самое, но по-своему. Мне показалось, что вешать обработчики на каждый инпут - это лишнее, да и "бегать" по коллекции элементов формы лишний раз - это тоже как-то не очень. Вобщем так, обработчик клика "болтается" только на форме:

<form name="lixme" onclick="onClick(this, event)">
<input type="checkbox" /><input type="checkbox" /><input type="checkbox" />
<input type="checkbox" /><input type="checkbox" /><input type="checkbox" />
<input type="checkbox" />
</form>

Ну и сценарий:

function onClick(aForm, aEvent) {
var target = aEvent.target || aEvent.srcElement,
bool = target.checked
increment = bool ? 1 : -1;
if (target.type != 'checkbox') {
return false;
}
if (aForm.clickCount == 2 && bool || aForm.clickCount == 3) {
onDisable(aForm, bool);
} else if (!aForm.clickCount) {
aForm.clickCount = 1;
}
aForm.clickCount += increment;
}

function onDisable(aForm, aBool) {
var elemens = aForm.elements,
iterator = elemens.length,
current;
while (iterator--) {
current = elemens[iterator];
if (current.type == 'checkbox') {
current.disabled = !current.checked && aBool;
}
}
}

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy