Как отметить все чекбоксы (checkbox). Чекбоксы - это что такое? Что значит чекбокс

Все разработчики сайтов, веб-приложений и десктопных программ знают, что такое чекбоксы. Но те люди, которые далеки от программирования, встречая такое непонятное иностранное слово, не понимают, о чем идет речь. На самом деле все очень просто. Чекбоксы - это одни из простейших элементов управления при создании форм.

Обычная галочка

Все люди встречались в жизни с такими символами, как галочка, начиная еще со школьной скамьи. При проведении тестирования нужно отмечать правильный вариант этим знаком. Затем при заполнении различных анкет. Ну а в нынешнее время, когда пользователи совершают через Интернет множество действий, без галочек вообще никуда. Даже простейшая регистрация на каком-либо сайте требует отметить некоторые пункты (увлечения, навыки).

Также сейчас развита интернет-торговля. При создании заказа пользователь отмечает интересующие его пункты. А еще часто при установке компьютерной игры предлагается выбрать дополнительное программное обеспечение. И тут тоже нужно сделать выбор. Так вот, чекбоксы - это те самые галочки, которые используются на веб-страницах.

В создании сайтов

Разработчики сайтов видят этот элемент несколько шире. Ведь создать сложнее, чем просто один раз кликнуть мышкой на квадратике и поставить галочку. Сайты разрабатываются при помощи гипертекстового языка разметки, который в профессиональной среде называют всего четырьмя буквами - HTML. И чтобы в нем создать галочку, необходимо написать определенный код.

Как же создаются чекбоксы? HTML имеет специализированный элемент (тег), который является полем, наделенным типом «чекбокс», который пишется следующим образом: .

Принципы функционирования

Работает такой элемент по простейшему принципу: либо утверждение, либо отрицание. Если в поле отмечена галочка, то веб-браузер отправляет переменную, которая отправит имя поля на сервер для обработки, если же галочка не отмечена, то сервер ничего не получает. У элемента есть необязательный атрибут со значением value, но он является необязательным.

Иногда бывает так, что на странице некоторые галочки уже стоят отмеченными. Для этого разработчики добавляют к тегу специальный атрибут, который указывает на уже поставленную по умолчанию галочку. Это атрибут checked, то есть «отмечено».

Чекбоксы - это такие элементы, которые подразумевают не единичный выбор из нескольких вариантов, а отметку всех подходящих. Для разработчика это имеет значение, потому что если одна форма содержит несколько чекбоксов, их имена должны быть отличными друг от друга.

Зависимые чекбоксы

В случае, когда нужно выбирать лишь один вариант из множества, используются другие элементы - радиокнопки, а не флажки. Но иногда применяется такой тип, как зависимые чекбоксы. HTML совместно с языком программирования JavaScript позволяет сделать один главный флажок, от которого зависят другие. При нажатии на него могут быть отмечены сразу несколько чекбоксов. Такое используется редко, так как это несколько противоречит самому правилу отметки галочек.

Как и все теги в HTML, чекбоксы - это такие элементы, которые имеют свои признаки. Какими они бывают? Выше уже был упомянут атрибут для предварительной отметки флажка - checked. Так как в одной форме у чекбоксов должны быть различные имена, нужен атрибут name. Он как раз идентифицирует каждый отдельный флажок. Для того, чтобы задать значение, которое будет отправляться на сервер, используют атрибут value.

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

Применение в таблицах

Чекбокс применяется не только в HTML при разработке сайтов и веб-приложений. Такое программное обеспечение, как 1С, тоже использует данный элемент. Ведь на предприятии есть множество разных составляющих и при работе с документацией все это необходимо отмечать. К примеру, при помощи чекбокса можно отметить список складских запасов или клиентов, которым нужно отправить товар.

В каких еще программах применяется данный элемент? Excel - все знают эту программу для составления таблиц от компании Microsoft, которая часто является Принцип работы флажка здесь таков: если галочка отмечена, то элемент возвращает истинное значение, если снята - ложное. Чтобы вставить чекбокс в документ, нужно включить специальную вкладку для разработчика. Делается это через параметры, которые в каждой версии Excel немного отличаются.

Как найти нужные настройки? Всегда есть справка или поисковая система. После того, как вкладка включена, можно вставлять элемент через команду «Вставить» пункта «Элементы управления». Здесь нужно обратить внимание на то, что это меню также содержит элементы ActiveX, расположенные под необходимыми элементами формы. Там тоже имеются чекбоксы. В чем между ними разница? Для использования элементов ActiveX нужен встроенный язык программирования VBA, который знают немногие. А обыкновенные флажки можно сразу привязать к определенной ячейке в документе.

После того, как чекбоксы в Excel будут вставлены, они по умолчанию становятся отмеченными. При нажатии мышью в любом месте документа отметка снимается. Для обратного выделения нужно кликнуть на флажок правой кнопкой мышки, так как левая кнопка снимает или устанавливает галочку.

При наведении курсора на флажок, зажатии и удерживании левой кнопки можно переместить элемент в любое место на документе. Также это удобно делать клавишами на клавиатуре. При наведении курсора на углы элемента можно растянуть его до большего размера или уменьшить. Специальные настройки позволяют оформить флажок, изменив его цвет, фон, рамку.

Вывод

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

Продолжаю серию статей по улучшению интерфейсных элементов. В этом раз пришла очередь поговорить о чекбоксах. Теперь можно получать .

Чекбоксы

Чекбоксы (checkboxes) - изначально создавались как элементы группового выбора. Т.е. предназначались для обозначения какой-то группы из элементов для последующих групповых действий с ними.

Хорошие и настоящие чекбоксы есть в Gmail

Примером использования чекбоксов может служить любой современный интерфейс почты. Отметив несколько писем их можно, например, все удалить.

Проблемы и решения при использовании чекбоксов

Посмотрим на основные проблемы, которые я наблюдаю при использовании чекбоксов и что с этими проблемами можно сделать.

Использование чекбоксов для бинарных состояний

Часто чекбокс используют для выбора между двумя разными опциями. Например, такой чекбокс я видел в одном интернет-магазине.

Такой чекбокс ничего не объясняет. Тут не понятно будет ли доставка почтой или мне придется ехать за своей покупкой. Гораздо логичней в этом случае будет использовать радиобаттон для выбора нужной опции. Переделываем.

Теперь стало все стало гораздо понятней

Использование чекбоксов для включения опций

Довольно часто чекбоксы использую для показа включения и выключения опции. Что я считаю не очень правильным.

Чекбоксы - это не кнопки. Это элементы предназначенные для групповых операций. Нажатие на чекбокс не должно приводить к какому либо действию. Для визуального определения включенных и невключенных опций из списка прекрасно подойдет цветовая индикация.

В приведенном выше примере следовало бы выбрать несколько опций и нажать кнопку «Применить». Такой вариант жизнеспособен, но не очень удобен. Что же делать? Я предлагаю такое решение:

Включение опции в одном из клиентских проектов

Здесь прекрасно видно состояние опции (включена или нет). Сразу видно переключение и решена еще одна проблема о которой мы поговорим дальше. Подобный переключатель пришел из интерфейса Айфона и является достойным аналогом простого чекбокса.

Малый размер кликабельной области

Согласно закону Фиттса, чем меньше элемент, тем труднее его использовать. Эту проблему можно наблюдать не только в чекбоксах. Это одна из главных проблем многих контролов.

В маленькую галочку не удобно целится и попадать. Даже если сделать всю область вместе с текстом кликабельной, то пользователи буду продолжать целиться именно в галочку.

Какие есть выходы и приемы?

Тем самым показав кликабельную область.

Чекбокс-кнопка на сайте Ostrovok.ru

Увеличив этим область клика.

Чекбокс-метка на одном из клиентских проектов

3. Превратить чекбокс в переключатель. Об этом я писал выше.

«Выбрать все» и «убрать все»

Для удобства работы с большим количеством чекбоксов в интерфейсе должны присутствовать опции «Выбрать все чекбоксы» и «Снять все чекбоксы». В противном случае работа с таким интерфейсом стает очень нудной и долгой. Представьте, что вам нужно выбрать хотя бы 10 пунктов из 12 имеющихся в списке. Это гораздо проще сделать выбрав все и сняв ненужные опции.

Выводы

Чекбоксы изначально создавались как инструменты группового выбора. И использовать их для чего-то еще в изначальном виде не стоит. Однако после некоторого тюнинга и соблюдения простых рекомендаций их можно превратить в удобный инструмент для вашего пользователя.

В предыдущих и следующих сериях
  • . Почему их не стоит использовать. А если использовать, то как?
  • . Простой выбор без выбора.
  • . Как должны работать поля ввода с разными типами данных.

Как отметить все чекбоксы? Воспользуемся jquery. Сразу предупреждаю, что в этом нет ничего сложного, не пугайтесь обилия кода в уроке. В основном это один и тот же код, повторённый несколько раз с небольшими изменениями.

Как отметить все чекбоксы с помощью ссылок

Чтобы отметить все чекбоксы, сделаем к ним 2 ссылки «отметить все» и «сбросить все»

















У ссылок есть атрибут rel=»form». Он определяет, для каких чекбоксов работает скрипт. В данном случае, для любого объекта с id=»example_group1″ Теперь напишем код, который будет отмечать все чекбоксы:



// Активируем все чекбоксы
//При клике на ссылку "Отметить все чекбоксы", активируем checkbox
$("a").click(function() {

$("#" + $(this).attr(‘rel’) + " input:checkbox:enabled").attr(‘checked’, true);
//Если вам нужно отмечать и неактивные чекбоксы (disabled), то предыдущая строчка должна выглядеть так:

return false;
});

// Снимаем все отметки
$("a").click(function() {

//Если должны обрабатываться неактивные чекбоксы, опять исключаем параметр:enabled
//$("#" + $(this).attr(‘rel’) + " input:checkbox").attr(‘checked’, true);
return false;
});
});

Как отметить все чекбоксы с помощью кнопок




















$(document).ready(function() { // Выбор всех //При клике по кнопке "отметить все" активируем чекбоксы $("#example_all").click(function() { $("#" + $(this).attr(‘rel’) + " input:checkbox:enabled").attr(‘checked’, true); return false; }); // При клике по кнопке "сбросить все" убираем отметки $("#example_noone").click(function() { $("#" + $(this).attr(‘rel’) + " input:checkbox:enabled").attr(‘checked’, false); return false; }); });

Как видите, всё почти так же, как и в способе с ссылками. Разница только в том, что ссылки мы различаем по параметру href, а кнопки по id

Как отметить все чекбоксы с одного главного чекбокса

Так же можно повесить отметку всех чекбоксов на один чекбокс:




















$(document).ready(function() {
// Выбор всех
//При клике по кнопке "отметить все" активируем чекбоксы
$("#example_all").click(function() {
$("#" + $(this).attr(‘rel’) + " input:checkbox:enabled").attr(‘checked’, true);
return false;
});

// При клике по кнопке "сбросить все" убираем отметки
$("#example_noone").click(function() {
$("#" + $(this).attr(‘rel’) + " input:checkbox:enabled").attr(‘checked’, false);
return false;
});
});

Учтите, что, ради избегания рекурсии, нужно ключевой чекбокс сделать не таким как все. Это можно реализовать с помощью присвоения класса для всех чекбоксов, кроме ключевого. В примере таким классом является.example_check.

Чекбокс может иметь только два состояния: отмеченный и неотмеченный. Они могут иметь любое значение, но при отправке формы либо передавать его (отмеченное состояние) либо не передавать (неотмеченное состояние). По умолчанию состояние неотмеченное. В HTML можно управлять чекбоксом следующим образом:

Визуально чекбокс может быть в трех состояниях: отмеченный, неотмеченный и неопределённый. Они могут выглядеть следующим образом:

Несколько замечаний о чекбоксах:

Вы не можете сделать чекбокс неопределённым в HTML. Нет специального атрибута. Хотя есть свойство чекбокса, которое можно менять в JavaScript:

Var checkbox = document.getElementById("some-checkbox"); checkbox.indeterminate = true;

или в jQuery:

$("#some-checkbox").prop("indeterminate", true); // prop введен в jQuery 1.6+

Неопределенное состояние является только визуальным эффектом. Чекбокс по-прежнему в отмеченном или неотмеченном состоянии. Значит, что визуальное неопределенное состояние маскирует реальное состояние чекбокса.

Как и сам чекбокс, его неопределенное состояние выглядит по-разному в разных браузерах. Вот пример в Opera 11.50 на Mac:

И зачем это нужно?

При разработке проектов часто возникает необходимость в структуре чекбоксов. Каждый чекбокс может иметь наследников чекбоксов. Если все наследники чекбоксы отмечены, то и родительский чекбокс может быть отмеченным. Если ни один наследник не отмечен - то и родитель не отмечен. Но если хотя бы один наследник отмечен, то родительский чекбокс находится в неопределённом состоянии (что может означать - "частично отмечен").

Пример кода не является идеалом - проверяется только один уровень для введения неопределенного состояния.

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

Var $check = $("input"), el; $check .data("checked",0) .click(function(e) { el = $(this); switch(el.data("checked")) { // Неотмеченное состояние, переходим в неопределённое case 0: el.data("checked",1); el.prop("indeterminate",true); break; // Неопределённое состояние, переходим в отмеченное case 1: el.data("checked",2); el.prop("indeterminate",false); el.prop("checked",true); break; // Отмеченное состояние, переходим в неопределенное default: el.data("checked",0); el.prop("indeterminate",false); el.prop("checked",false); } });

Разработчики веб-приложений, сайтов и десктопных программ должны знать, что собой представляют чекбоксы. Но пользователи, которые далеки от программирования, встречаясь с этим непонятным иностранным словом, довольно часто не понимают его значения. На самом же деле все довольно просто. Чекбоксы представляют собой простейший элемент управления при создании форм.

Чекбокс: обычная галочка

Наверняка каждый из нас встречался в жизни с таким символом, как галочка. Это обозначение должно быть нам знакомо, начиная еще со школьной скамьи. Этим знаком отмечают правильный вариант ответа при проведении тестирования. Также галочки используются при заполнении различных анкет. Сегодня, когда пользователи множество действий совершают через интернет, без галочек вообще никуда не деться. Даже простейшая процедура регистрации на каком-либо сайте требует отметить некоторые пункты. Сегодня как-никогда развита интернет-торговля. Пользователь при создании заказа может отметить только те пункты, которые интересуют егов особенности. Еще очень часто при установке компьютерных игр пользователю предлагается выбрать дополнительное программное обеспечение. В данном случае нужно будет тоже сделать выбор. Так вот, чекбоксы как раз и являются теми самыми галочками, которые используются на веб-страницах.

Использование чекбоксов при создании сайтов

Разработчики сайтов несколько шире видят данный элемент. Ведь создать его намного сложнее, чем просто кликнуть мышкой по квадратику. Разрабатываются сайты при помощи гипертекстового языка разметки. В профессиональной среде такой язык называют HTML. Чтобы создать в этом языке такую галочку необходимо написать определенный код. Как же на самом деле создаются чекбоксы? HTML представляет собой специализированный элемент, который является полем, наделенным типом «чекбокс». Пишется он следующим образом:

Чекбокс: принцип функционирования

Данный элемент работает по довольно простому принципу: либо отрицание, либо утверждение. Если в поле отмечена галочка, то браузер отправит переменную, которая отправит для обработки имя поля на сервер. Если же галочка не будет отмечена, то сервер ничего не получит. У данного элемента имеется атрибут, который имеет значение value. Данный атрибут является необязательным. Разработчики добавляют к тегу специальный атрибут, который указывает на галочку, поставленную по умолчанию. Называется этот атрибут checked, что в переводе с английского означает «отмечено».

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

Зависимые чекбоксы

В том случае, если необходимо выбрать только один вариант из множества представленных, то можно использовать другие элементы, такие как радиокнопки. В некоторых случаях используется такой тип, как зависимые чекбоксы. Совместно с языком программирования JavaScriptHTML позволяет сделать один главный флажок, от которого будут зависеть все остальные. При нажатии на данный элемент может быть отмечено сразу несколько чекбоксов. Используется такое довольно редко, поскольку это противоречит правилу отметки галочек.Чекбоксы, как и другие теги в HTML, имеют свои признаки. Какими же они могут быть? Выше уже говорилось об атрибуте для предварительной отметки флажка checked. Поскольку в одной форме у чекбоксов должны быть разные имена, необходим атрибут name. Именно этот атрибут и идентифицирует каждый флажок по отдельности. Чтобы задать значение, которое будет отправлено на сервер, необходимо использовать атрибут value. Необходимо отметить, что чекбоксы представляют собой графические элементы управления, которые применяются преимущественно в различных формах. Работают они в трех режимах: выбранный, не выбранный и неопределенный.

Использование в таблицах

Такой элемент как «чекбокс» может использоваться не только в HTML при разработке веб-приложений и сайтов. Данный элемент также используется в программном обеспечении, например, в программах 1C. На предприятии имеется множество различных составляющих и при работе с документацией необходимо все это отмечать. Например, при помощи чекбокса можно отмечать список клиентов или перечень складских запасов. В каких еще программах может быть использован данный элемент? Всем известна программа Exel от компании Microsoft, которая зачастую используется в качестве альтернативы 1C. Здесь принцип работы данного флажка следующий: если галочка отмечена, то данный элемент возвращает истинное значение. Если галочка снята, то данный элемент возвращает ложное значение. Чтобы вставить чекбокс в документ, необходимо включить специальную вкладку для разработчика. Это можно сделать при помощи параметров, которые отличаются в каждой версии программы Exel.

Как же можно найти нужные настройки? Для этой цели всегда можно воспользоваться поисковой системой или справкой. Когда данная вкладка будет включена, то можно будет вставлять данный элемент, используя команду «Вставить» из пункта «Элементы управления». Тут необходимо обратить внимание на тот момент, что в меню также содержатся элементы ActiveX, которые расположены под необходимыми элементами формы. Здесь также имеются чекбоксы. В чем же заключается разница?Для использования элементов ActiveX необходим встроенный язык программирования VBA, которым владеют немногие. Обыкновенные флажки можно привязать сразу к определенной ячейке в документе. После того, как все чекбоксы в Exel будут проставлены, они станут отмеченными по умолчанию. Если кликнуть мышкой в любом месте документа, отметка будет снята. Чтобы выполнить обратное выделение, необходимо кликнуть по флажку правой кнопкой мыши. Левая кнопка снимает или устанавливает галочку.