Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   помогите с CheckBox (времени в обрез) (https://javascript.ru/forum/dom-window/9820-pomogite-s-checkbox-vremeni-v-obrez.html)

sympler 07.06.2010 12:11

помогите с CheckBox (времени в обрез)
 
вот форма
<form action="" method="POST" name="test">

<input type="checkbox" value="1" id="chek1" onclick="checkCheck()" name="var1" />1<br>
<input type="checkbox" value="2" id="chek2" onclick="checkCheck()" name="var2" />2<br>
<input type="checkbox" value="3" id="chek3" onclick="checkCheck()" name="var3" />3<br>
<input type="checkbox" value="4" id="chek4" onclick="checkCheck()" name="var4" />4<br>
<input type="checkbox" value="5" id="chek5" onclick="checkCheck()" name="var5" />5<br>
<input type="checkbox" value="6" id="chek6" onclick="checkCheck()" name="var6" />6<br>
<input type="checkbox" value="7" id="chek7" onclick="checkCheck()" name="var7" />7<br>
<input type="checkbox" value="8" id="chek8" onclick="checkCheck()" name="var8" />8<br> 
<input type="checkbox" value="9" id="chek9" onclick="checkCheck()" name="var9" />9<br>
<input type="checkbox" value="10" id="chek10" onclick="checkCheck()" name="var10" />10<br>

<input type="submit" value="Проголосовать"  name="opros" /><br>

</form>


задание очень простое, но в силу слабого знания javascript решить быстро не могу, а время поджимает:

необходимо дать пользователю выбрать только один или два чексбокса

Gvozd 07.06.2010 12:18

полностью готовое решения я вам не дам, по той причине, что форум нужен для помощи,а не полного решения за вас проблемы.
Что вам понадобится из знаний:
1)
<input type="checkbox" value="1" id="chek1" onclick="checkCheck(this)" name="var1" />1<br>

таким образом, мы получим в ф-ции checkCheck первым параметром ссылку на измененый чекбокс
2)
Если мы объявим вне этой ф-ции, переменную то она также будет внутри видна.
таким образом мы сможем ее использовать как счетчик выбранных чекбоксов, прибаляя единицу, когда был включен чекбокс, и удаляя еденицу, когда снимается
3)
тот факт, что чекбокс был выбран, определяется его свойством checked
аналогично его можно снять, если мы третий пытаемся сделать.

Из даного материала у вас должно поулчится сделать полный сркипт

exec 07.06.2010 12:23

(function () {
	var nodes = document.test.getElementsByTagName('input');
	for (var i = 0; i < nodes.length; i++) {
		if (nodes[i].type == 'checkbox') {
			nodes[i].onclick = function (e) {
				e = e || window.event;
				if ((function () {
					var x = 0;
					for (var z = 0; z < nodes.length; z++) {
						if (nodes[z].checked) {
							x++;
						}
					}
					return x;
				})() > 2) {
					e.preventDefault(),
					e.returnValue = false;
				}
			}
		}
	}
})();

Gvozd 07.06.2010 12:26

exec,
это не раздел о jQuery

sympler 07.06.2010 13:37

вот решение, все таки сделал ))) если кому не понятно, пишите на мой блог

<script language="javascript">
<!--
var check = 0;
var kolvo = 10; // количество чекбоксов  в нашей форме
function checkCheck(elem) 
{
     // если ставим галочку +1, если убираем галочку с чекбокса -1 
    if (elem.checked) 
    {
       check += 1; 
    }
    else
    {
       check -= 1; 
    }

      if (check == '2')    //   чек больше или равен 2, надо дизаблить все НЕ отмеченные!!
      {
        for (var i = 1; i <= kolvo; i++) 
        {
          var my = 'chek'+ i;
          if (document.getElementById(my).checked == false)
          {
              document.getElementById(my).disabled=true;
          }
        }
   
      }
      else    // чек не равен 2, надо раздизаблить все чекбоксы!!
      {
        for (var i = 1; i <= kolvo; i++) 
        {
          var my = 'chek'+ i;
          document.getElementById(my).disabled=false;
        } 
      }   
}

//-->
</script>

<form action="/" method="POST" name="test">

<input type="checkbox" value="1" id="chek1" onclick="checkCheck(this)" name="var1" />1<br>
<input type="checkbox" value="2" id="chek2" onclick="checkCheck(this)" name="var2" />2<br>
<input type="checkbox" value="3" id="chek3" onclick="checkCheck(this)" name="var3" />3<br>
<input type="checkbox" value="4" id="chek4" onclick="checkCheck(this)" name="var4" />4<br>
<input type="checkbox" value="5" id="chek5" onclick="checkCheck(this)" name="var5" />5<br>
<input type="checkbox" value="6" id="chek6" onclick="checkCheck(this)" name="var6" />6<br>
<input type="checkbox" value="7" id="chek7" onclick="checkCheck(this)" name="var7" />7<br>
<input type="checkbox" value="8" id="chek8" onclick="checkCheck(this)" name="var8" />8<br> 
<input type="checkbox" value="9" id="chek9" onclick="checkCheck(this)" name="var9" />9<br>
<input type="checkbox" value="10" id="chek10" onclick="checkCheck(this)" name="var10" />10<br>

<input type="submit" value="Проголосовать"  name="opros" /><br>

</form>


Часовой пояс GMT +3, время: 19:57.