Главная

Контакты

Спички

Другие работы 1 2 3 4

 

Этой статьей я открываю новый цикл статей об изменении внешнего вида стандартных элементов формы. Я не буду углубляться в дебри объектно-ориентированного JS и расписывать код на 3-4 килобайтах, а попробую сделать все как можно проще и доступнее.

И так, задача заключается в изменении внешнего вида стандартных чекбоксов. Пусть вместо чекбоксов будут простые картинки, имитирующие работу элементов формы.

Код скрипта выглядит следующим образом:

<style>

body { font: 12px verdana }
.no { background: url(cross.gif) no-repeat; padding-left: 22px; height: 22px; cursor: default }

</style>

<body>

<form method="post">
<input type="hidden" id="checkbox1" name="checkbox1" value="0">
<input type="hidden" id="checkbox2" name="checkbox2" value="0">
<input type="hidden" id="checkbox3" name="checkbox3" value="0">
</form>

<div class="no" id="div1" onclick="checked('div1', 'checkbox1')">Element one</div>
<div class="no" id="div2" onclick="checked('div2', 'checkbox2')">Element two</div>
<div class="no" id="div3" onclick="checked('div3', 'checkbox3')">Element three</div>

<script language="JavaScript">

function checked(divs, box) {

var obj = document.getElementById(box);
if (obj.value == 0) ground = "url('tick.gif') no-repeat";
else ground = "url('cross.gif') no-repeat";

document.getElementById(divs).style.background = ground;
obj.value = Math.abs(obj.value - 1);

}

</script>

</body>

Теперь пройдемся подробнее по коду. Все чекбоксы заменяются объектом hidden:

<input type="hidden" id="checkbox1" name="checkbox1" value="0">
<input type="hidden" id="checkbox2" name="checkbox2" value="0">
<input type="hidden" id="checkbox3" name="checkbox3" value="0">

При этом у каждого чекбокса должно быть уникальное имя (checkbox1, checkbox2 и т.д.)
Имитация чекбокса осуществляется при помощи дива:

<div class="no" id="div1" onclick="checked('div1', 'checkbox1')">Element one</div>

Класс "no" подгружает картинку чекбокса в виде фона. Каждый div так же имеет уникальное имя. При нажатии на div происходит обращение к функции checked, в которую передается id данного diva и id чекбокса, к которому привязан данный div:

checked('div1', 'checkbox1')

Функция checked выполняет следующие действия:

1. Проверяет значение данного чекбокса (в нашем случае объекта hidden), и меняет соответствующую картинку в зависимости от того, включен или отключен чекбокс:

var obj = document.getElementById(box);
if (obj.value == 0) ground = "url('tick.gif') no-repeat";
else ground = "url('cross.gif') no-repeat";

document.getElementById(divs).style.background = ground;

2. Присваивает объекту hidden значения переключателя 0 или 1:

obj.value = Math.abs(obj.value - 1);

При этом, если значение obj.value было равно 0, оно изменится на 1 (|-1|) или, если значение было равно 1, ovj.value будет присвоено значение 0.

 

© 2007 ABV-Design. Раскрутка сайта ООО "СЕО"

карта