Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Установить checkbox при нажатии на input (https://javascript.ru/forum/dom-window/45915-ustanovit-checkbox-pri-nazhatii-na-input.html)

SLameN 20.03.2014 16:22

Установить checkbox при нажатии на input
 
Использую следующий код spoiler:

function showSpoiler(obj)
{
var inner = obj.parentNode.getElementsByTagName("div")[0];
if (inner.style.display == "none") inner.style.display = "";
else inner.style.display = "none";
}


<div class='spoiler'>
<input onClick='showSpoiler(this);' value='показать' type='button'  />
<div style='display: none;'>
здесь скрыто
<input type='checkbox' name=name_2[]' />
</div>
</div>

<div class='spoiler'>
<input onClick='showSpoiler(this);' value='показать' type='button'  />
<div style='display: none;'>
здесь скрыто
<input type='checkbox' name='name_1[]' />
</div>
</div>


Вопрос, можно ли при нажатии на кнопку - показать, установить checkbox? И наоборот, при закрытии убрать checkbox.

Устанавливать checkbox нужно только в своем <div>, т.е. если нажмем на кнопку где у checkbox имя - name_1, то поставится checkbox в name_1.

рони 20.03.2014 16:55

SLameN,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script>
     function showSpoiler(obj)
{
var inner = obj.nextElementSibling;
inner.style.display = inner.style.display == "none" ? "" : "none";
var input = inner.querySelector('input');
input.checked = inner.style.display != "none"
}

  </script>
</head>

<body>
  <div class='spoiler'>
<input onClick='showSpoiler(this);' value='показать' type='button'   />
<div style='display: none;'>
здесь скрыто
<input type='checkbox' name=name_2[]' />
</div>
</div>

<div class='spoiler'>
<input onClick='showSpoiler(this);' value='показать' type='button'  />
<div style='display: none;'>
здесь скрыто
<input type='checkbox' name='name_1[]' />
</div>
</div>

</body>

</html>

SLameN 20.03.2014 17:01

рони,
большое спасибо, какой раз уже выручаешь :) Не могу поставить +, т.к. последний раз ставил тебе

SLameN 21.03.2014 08:46

Еще раз большое спасибо за помощь. Подскажите, пожалуйста, а возможно сделать так: в каком та из дивов сделать определенный класс и согласно этому классу делать чеки. Просто у меня есть точно такой же код (html), но там чеков много и не все они должны выбираться, только в определенных случаях. Определенные случаи будут классы в дивах.

Например:
<div class='spoiler' id='определенный случай'>

или
<div class='определенный случай'>
<div class='spoiler'>

рони 21.03.2014 08:57

SLameN,
а присвоить нужным 'checkbox' класс и ставить checked только им?
var input = inner.querySelector('.определённый класс');

SLameN 21.03.2014 10:10

Да, то, что нужно! Респект ;)


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