@barhatoff

Как сделать кастомный checkbox на JS?

Решил сделать чекбокс на JS, потому-что с CSS-ом геморно кастомный чекбокс замутить.
Сделал все это дело через замену значения атрибута img.
Проблема в том что этот скрипт работает, но только при двух нажатиях, то есть, срабатывают операторы if и else по разу и далее не реагируют. Что подскажете?

HTML код:
<div id="rmbr" onclick="checkbox()">
  <img class="left" id="rmbr_img" height="10" width="10" src="src/span.png">
   <p>Remember me</p>
</div>

JS код:
var remember = rmbr_img.getAttribute('src');

function checkbox() {
         if (remember == "src/span.png") {
 	 	remember = rmbr_img.setAttribute('src', 'src/span_act.png');
 	 }
 	 else {
 	 	remember = rmbr_img.setAttribute('src', 'src/span.png');
 	 }
}
  • Вопрос задан
  • 1300 просмотров
Решения вопроса 1
Ankhena
@Ankhena Куратор тега JavaScript
Нежно люблю верстку
потому-что с CSS-ом геморно кастомный чекбокс замутить

Ну прям

(усовершенствованный вариант со специально видимым фокусом, который потом можно кастомизировать как хочется)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@402d
начинал с бейсика на УКНЦ в 1988
Какие проблемы с версткой на CSS . Тут все просто

стили
input[type="checkbox"] + span{background-repeat:no-repeat;
background-position:left top;
display:inline-block;
width:21px;height:35px;
vertical-align:middle;}
input[type="checkbox"] + span{background-image:url(data:image/png;base64, ....картинка... );}
input[type="checkbox"]:checked + span{background-image:url(data:image/png;base64,....картинка...);}
верстка для чекбокса
<label><input name="" type="checkbox" ><span tabindex=целое_число></span> текст пояснение </label>

еще сам чекбокс через стили в дисплай ноне
tab= делает любой элемент выбираемым.
с клавиатуры чекбокс будет менять значение по пробелу.
Ответ написан
@Gortyser
display: none;
Смысла в вашем чекбоксе нет совсем - он не привязан ни к какому значению. Но так как задача не в этом, то без разницы.
Ваш код заработает, если перенести строку var remember = rmbr_img.getAttribute('src'); в тело функции checkbox.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы