Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   checkbox (Поставить/убрать галочку) (https://javascript.ru/forum/misc/33436-checkbox-postavit-ubrat-galochku.html)

NitroGenerate 23.11.2012 10:55

checkbox (Поставить/убрать галочку)
 
Ребят подскажите по работе с чек боксом.
Написал функцию, писал ее по шаблону, по этому она как всегда не работает.
function change(frm){
		var elem=frm;
		if(document.getElementById(elem).checked=='true';)
			document.getElementById(elem).checked='false';
		else
			document.getElementById(elem).checked='true';
	}
}


И сам код вызова:
<td onclick="change('<?=$SubKey.$id?>');" class="layer1">
	<?=$Value?>
	<br />
	<br /><div class="layer2">
		<input type="checkbox" id="<?$SubKey.$id?>" name="option1" value="<?=$SubKey.':'.$id?>">
	</div>
</td>


Суть такова, есть таблица, в ней куча ячеек при нажатии на ячейку отмечается чек бокс который в этой ячейке. Еще раз нажать, чекбокс слетает.
Вопрос, как оживить скрипт?

lord2kim 23.11.2012 11:31

NitroGenerate, но ведь в ячейке находится и сам checkbox...смысл?
не лучший вариант называть функции change, click и т.п.
function cbx_chng(cbx) {
    if (document.getElementById(cbx).checked) {
        document.getElementById(elem).checked = "false";
    } else {
        document.getElementById(elem).checked = "true";
    }
}

ivan-klimov 24.11.2012 00:25

NitroGenerate,
А обязательно это скриптом делать?

Ведь можно обвернуть input в label и сделать лэйбл блочным с высотой и шириной в 100%. Тогда при клике в любом месте ячейки чекбокс будет срабатывать.

Вот посмотрите в песочнице http://learn.javascript.ru/play/Px6Ncc

Или сразу код:
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title></title>
</head>
<body>
  <table>
    <tr>
      <td style="width:200px; height: 200px; border:1px solid #999;">
        <label style="display:block; width:100%; height:100%;"><input type="checkbox" /></label>
      </td>
    </tr>
  </table>
</body>
</html>


Все зависит от целей и задач, но вариант вполне рабочий ;)


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