Checkbox checked

При разработке веб-проектов может потребоваться проверка checkbox checked jQuery, чтобы показать или скрыть определённую секцию веб-формы, какой-либо контент или осуществить какое-нибудь действие.

Например, можно включить или выключить кнопку «Далее» в зависимости от состояния отметки «Я согласен с пользовательским соглашением», позволяя зарегистрироваться только пользователям, отметившим чекбокс.

Аналогично можно активировать текстовое поле чекбоксом, когда пользователь хочет оставить отзыв на сайте.

В этой статье мы покажем, как, используя jQuery или JavaScript можно проверить состояние чекбокса и на основании этого осуществить какие-либо действия.

Пример: как показать div, если отмечен чекбокс


В этом примере jQuery checkbox set checked («отмечен») — когда он отмечен, отображается элемент div. Если убрать отметку, div пропадает:

Посмотреть демо и код онлайн

Полный код примера:

В примере выше мы используем событие click для чекбокса и метод toggle, чтобы скрывать или показывать div. Используя jQuery, сделать это предельно просто. Рассмотрим ещё один пример.

Пример: как показать/скрыть веб-форму в зависимости от состояния чекбокса

В этом примере мы используем для jQuery input checkbox checked событие change. Когда ставится или убирается галочка, исполняется соответствующий код.

В демо, ссылка на который приведена ниже, мы скрываем элемент div, содержащий веб-форму. Форма сделана при помощи встроенных классов Bootstrap, поэтому вместе со ссылкой на библиотеку jQuery в разделе <head> также указан CSS-файл Bootstrap.

Отметьте или уберите галочку с чекбокса, чтобы скрыть или показать веб-форму. Для этого используются методы $.show и $.hide:

Посмотреть демо и код онлайн

Полный код примера:

Обратите внимание, как происходит jQuery checkbox checked проверка, и реализуются условия if/else для показа или скрытия формы.

Пример: проверка чекбокса с помощью JavaScript

Если вы не хотите использовать jQuery для проверки состояния чекбокса и выполнения на ее основе различных действий, можно воспользоваться JavaScript.

В приведенном ниже примере для получения состояния чекбокса мы используем свойство JavaScript getElementById. Если чекбокс отмечен, показывается кнопка, если нет — кнопка скрывается:


Посмотреть демо и код онлайн

Полный код примера:

В примере, приведенном выше, JavaScript-код для jQuery checkbox checked проверки и скрытия/показа кнопки расположен над тегом </body>. В нём можно использовать ссылки, кнопки, параграфы, div и другие элементы.

www.internet-technologies.ru

Example form

Our example form looks like this:

  <input type="checkbox" name="foo" value="bar" />  <input type="button" onclick="show_checked()" value="Show" />  <input type="button" onclick="set_checked(true)" value="On" />  <input type="button" onclick="set_checked(false)" value="Off" />  

There’s checkbox with name "foo" and then three buttons. The first calls a functionto show us if the checkbox is checked or not, and the second two change it from being checked to not being checked.

Check if the checkbox is checked

There are several ways to get to work out if a checkbox is checked or not with jQuery, and here a couple of alternatives. Each will return true if it’s checked or false if it’s not.

  $('input[name=foo]').is(':checked')  $('input[name=foo]').attr('checked')  

Set the checkbox to checked or not checked


The status of the checkbox can be changed using the attr() function like so, to check the box:

  $('input[name=foo]').attr('checked', true);  

and like so to uncheck the box:

  $('input[name=foo]').attr('checked', false);  

Working example

And finally, here’s the example form in action:

A note about boolean values

There is a discussion in the comments below about issues found with Chromium which may be related to string values of true and false being passed whereas it needs to be strictly a boolean true or false otherwise unexpected consequences can happen.

It has been suggested to use .removeAttr() instead but this may have other consequences from my reading of the comments on the jQuery documentation page for the function. I will follow up this post at a later date and do more testing to confirm for sure

Toggling a checkbox when clicking a label


Note that Javascript is not required to toggle a checkbox when clicking some text; that’s what HTML <label>s are for. Have a read of my follow up post using HTML <label> to toggle and select fields for more information.

www.electrictoolbox.com

Стилизуем checkbox

HTML

<label>
<input class="checkbox" type="checkbox" name="checkbox-test">
<span class="checkbox-custom"></span>
<span class="label">Lorem ipsum dolor</span>
</label>

Вся разметка у нас состоит из трех основных элементов, а именно:

.checkbox — реальный чекбокс input[type=»checkbox»]
.checkbox-custom — этот элемент я называю — кастомный чекбокс. Ему мы и будем менять внешний вид и позиционировать, как стилизованный чекбокс, ведь реальный чекбокс будет скрыт
.label — текст лейбла, который будет выводится справа от чекбокса

Все эти элементы должны быть обязательно обернуты в тег label, иначе ничего работать не будет.

Кстати, если вам требуется, чтобы по умолчанию, чекбокс был отмечен, то в нашей HTML разметке, для реального чекбокса задайте атрибут checked

CSS

Теперь добавляем CSS стили.

/* Скрываем реальный чекбокс */ .checkbox { display: none; } /* Задаем внешний вид для нашего кастомного чекбокса. Все обязательные свойства прокомментированы, остальные же свойства меняйте по вашему усмотрению */ .checkbox-custom { position: relative; /* Обязательно задаем, чтобы мы могли абсолютным образом позиционировать псевдоэлемент внютри нашего кастомного чекбокса */ width: 20px; /* Обязательно задаем ширину */ height: 20px; /* Обязательно задаем высоту */ border: 2px solid #ccc; border-radius: 3px; } /* Кастомный чекбокс и лейбл центрируем по вертикали. Если вам это не требуется, то вы можете убрать свойство vertical-align: middle из данного правила, но свойство display: inline-block обязательно должно быть */ .checkbox-custom, .label { display: inline-block; vertical-align: middle; } /* Если реальный чекбокс у нас отмечен, то тогда добавляем данный признак и к нашему кастомному чекбоксу */ .checkbox:checked + .checkbox-custom::before { content: ""; /* Добавляем наш псевдоэлемент */ display: block;			 /* Делаем его блочным элементом */ position: absolute; /* Позиционируем его абсолютным образом */ /* Задаем расстояние от верхней, правой, нижней и левой границы */ top: 2px; right: 2px; bottom: 2px; left: 2px; background: #413548; /* Добавляем фон. Если требуется, можете поставить сюда картинку в виде "галочки", которая будет символизировать, что чекбокс отмечен */ border-radius: 2px; }     

Если вы базово знаете CSS, то разобраться в данных стилях не составит труда.

Но а для тех, кто еще только учится, я постараюсь объяснить, что именно мы делаем данным CSS кодом.

1. Мы скрываем наш реальный чекбокс. Это мы делаем из-за того, что сам по себе чекбокс нельзя кроссбраузерно стилизовать на чистом CSS. Поэтому мы применяем небольшую уловку, реальный чекбокс скрываем, а кастомный чекбокс (напомню, что это элемент с классом .checkbox-custom), стилизуем так, как нам нужно.

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

2. Задаем внешний вид для нашего кастомного чекбокса. Ко всем важным свойствам я дал комментарии в приведенном выше CSS, поэтому не буду здесь останавливаться.

3. Это пожалуй самое интересное. Я думаю вы обратили внимание на селектор .checkbox:checked + .checkbox-custom::before

Он задает следующее

Если наш реальный чекбокс отмечен (за этим следит селектор .checkbox:checked), то тогда внутрь нашего кастомного чекбокса мы добавляем псевдоэлемент (за это отвечает .checkbox-custom::before). Данный псевдоэлемент выводится, как квадратик внутри нашего кастомного чекбокса. По данному квадратику мы и можем понять, отмечен чекбокс или нет. Разумеется данный квадратик вы сможете поменять на все что угодно, например на привычную всем «галочку». В данном вопросе CSS нас ничем не ограничивает.

И также мы видим, что селекторы .checkbox:checked
и .checkbox-custom::before соединены знаком «+», с его помощью мы по сути задаем отношение, что если реальный чекбокс отмечен, то только лишь в этом случае мы должны добавить псевдоэлемент внутрь кастомного чекбокса, в противном же случае ничего делать не нужно.

Стилизуем radio-кнопки

Процесс стилизации radio-кнопок, аналогичен чекбоксам.

Создаем привычную нам разметку (в данном случае отличаются только названия некоторых классов)

HTML

<label>
<input class="radio" type="radio" name="radio-test">
<span class="radio-custom"></span>
<span class="label">Lorem ipsum dolor sit amet, consectetur</span>
</label>

CSS

Я добавил в стили указанные выше, новые селекторы, которые относятся как раз к radio-кнопкам.

.checkbox, .radio { display: none; } .checkbox-custom, .radio-custom { width: 20px; height: 20px; border: 2px solid #ccc; border-radius: 3px; position: relative; } .checkbox-custom, .radio-custom, .label { display: inline-block; vertical-align: middle; } .checkbox:checked + .checkbox-custom::before, .radio:checked + .radio-custom::before { content: ""; display: block; position: absolute; top: 2px; right: 2px; bottom: 2px; left: 2px; background: #413548; border-radius: 2px; } .radio-custom, .radio:checked + .radio-custom::before { border-radius: 50%; }     

Теперь у нас на странице будут нормально работать, как checkbox, так и radio-кнопки.

Как видите, способ достаточно удобный, не требует использования JS и при этом нормально будет реагировать на стандартное поведение формы, например на ее сброс.

Единственный недостаток данного способа — это то, что нам приходится создавать некий пустой элемент .checkbox-custom для чекбоксов и .radio-custom для radio-кнопок. Который внутри себя не содержит никакого смысла с точки зрения HTML, ведь в разметке он валяется, как «мусорный» тег.

Поэтому можно немного улучшить данный способ и полностью отказаться от «мусорного» тега, заменив его псевдоэлементом. Если вам интересно, как это сделать, то пожалуйста, поставьте лайк к данной статье или напишите комментарий, тогда я обязательно выпущу продолжение и опишу процесс более подробно.

webcareer.ru

Using jQuery version 1.6 or newer

As I mentioned above, we need to check the checked property of an element and correct way of doing it is to use .prop()
method. So if other methods do not add any value to your code’s readability, please use the first method below.

// First method - Recommended $('#checkbox').prop('checked') // Boolean true  // Second method - Makes code more readable (e.g. in if statements) $('#checkbox').is(':checked') // Boolean true  // Third method - Selecting the checkbox & filtering by :checked selector $('#checkbox:checked').length // Integer >0 $('#checkbox:checked').size() // .size() can be used instead of .length  // Fourth method - Getting DOM object reference $('#checkbox').get(0).checked // Boolean true $('#checkbox')[0].checked // Boolean true (same as above)

Earlier version of jQuery (up to v1.5)

jQuery version 1.6 introduced .prop() method to get HTML/DOM element’s property instead of an attribute. Prior to version 1.6 we had to use .attr() method instead. Read more about the difference between .prop() and .attr().

// First method - Recommended $('#checkbox').attr('checked') // Boolean true  // Second, Third & Fourth methods – The same as for version 1.6. See above.

Caveats & problems

What if your jQuery selector has a set of more than one checkbox? This is how the methods above will behave?


Case 1: <input class="check" type="checkbox" name="one" checked="checked"> <input class="check" type="checkbox" name="two">  Case 2: <input class="check" type="checkbox" name="two"> <input class="check" type="checkbox" name="one" checked="checked">
// Case 1: $('#checkbox').prop('checked') // true $('#checkbox').is(':checked') // true $('#checkbox:checked').length // 1 $('#checkbox')[0].checked // true  // Case 2: $('#checkbox').prop('checked') // false $('#checkbox').is(':checked') // true $('#checkbox:checked').length // 1 $('#checkbox')[0].checked // false

jQuery attribute selector $('elem[name]') does not return updated property value. So use other methods instead.

$('#checkbox[checked]').length; // Integer 1 $('#checkbox').prop('checked', false); // Uncheck the checkbox $('#checkbox[checked]').length; // Still returns 1, not 0

Select all checked checkboxes on the page or within a container.

$("input[type=checkbox][checked]"); // All checkboxes in the document that are checked

This is all I could find on the subject. Please bookmark or share the article so that it is easier to find it later.

jquery-howto.blogspot.com

Checkbox и php

Сразу скажу, что есть несколько вариантов проверки данного хозяйства. Давайте сразу к делу.

HTML checkbox

Хотелось бы отметить, что многие изначально совершают ошибки и пишут неправильно html checkbox. То есть начитавшись в Интернет информации 10 летней давности пишут всякую охинею. Согласно одного из последних строгих DOCTYPE, который пытается нас сопроводить в эпоху HTML5 checkbox правильно пишется следующим образом:

 <input type="checkbox" name="checkme" checked="checked" /> 

Обратите внимание, id в input объекте нет! Согласно последним стандартам к таким HTML объектам нужно обращаться через свойство name. Также обратите внимания, что нет и value, при type="checkbox" это значение не прописывается. Оно по умолчанию =0. То есть нет смысла его указывать, если не требуется выставить, что либо принудительно. Пишите правильно и тогда все браузеры будут корректно передавать 0 или 1 в ваш PHP код.

Проверка checkbox на PHP — вариант 1

Предположим, что у Вас есть форма такого типа:

<form action="page.php" method="post"> … <input type="checkbox" name="checkme" value="on" /> … <input type="submit" value="ok"> </form>

После нажатия на кнопку «ok» данные передаются скрипту page.php. В скрипте page.php выполняем проверку на предмет, был ли отмечен чекбокс, то есть выглядит это примерно так:

 <?php … if (isset($checkme) && strlen($checkme)>0)// здесь «checkme» - имя чекбокса {… // если чекбокс отмечен, выполняем какие-то действия } … ?> 

Как проверить checkbox на PHP — вариант 2

Есть еще один способ сделать это, более простой, но также не лучшее решение в форме, а именно перед тегом <input type="checkbox"> поместить тег <input type="hidden"> с тем же самым значением параметра «name»:

 <form …> … <input type="hidden" name="checkme" value="0"> <input type="checkbox" name="checkme" value="1"> … </form> 

Теперь если checkbox установлен, в переменной $checkme передастся «1», в противном случае «0».

Как правильно проверять checkbox на PHP — вариант 3

Теперь рассмотрим как же должно быть правильно все проверяться.

Для начала, нужно форму сделать согласно стандартам консорциума W3C

Код html:

 <form action="page.php" method="post"> <input type="checkbox" name="checkme" checked="checked" /> « правильно пишем input согласно стандартам </form> 

Код PHP:

 function checkbox_verify($_name) // Выполняет: проверку checkbox { // обязательно прописываем, чтобы функция всегда возвращала результат $result=0;  // проверяем, а есть ли вообще такой checkbox на HTML форме, а то часто промахиваются if (isset($_REQUEST[$_name])) { if ($_REQUEST[$_name]=='on') {$result=1;} } return $result; } 

В итоге, вызов получается очень простым:

 echo checkbox_verify('checkme'); 

Можно php код еще меньше написать, но я расписал для наглядности. Пользуйтесь на здоровье.

sd-company.su

I have a function below that I want to only trigger when a checkbox in the same tr is checked. Please tell me what I am doing wrong, the usual methods are not working. Thanks

JS

$(".add_menu_item_table").live('click', function() {  var value_td = $(this).parents('tr').find('td.td_name').text();  if ($('input.checkbox_check').attr(':checked')); {  var newDiv = $('<div class="div_menu_button"></div>');  var showDiv = $('<div id="show' + "0" + numShow++ + '" class="menu_button_info hidden"></div>');  var toggleTrigger = $('<a id="toggleshow' + "0" + numToggle++ + '" data-target="#show' + "0" + numTarget++ + '" class="toggle_trigger actions">&nbsp;</a><div style="padding:5px"></div>');  var menuForm = $('<form id="menu_edit_form' + "0" + numForm++ + '" class="menu_creation_form"></form>');  $('#created_buttons_list').append(  newDiv.text(value_td)  );  newDiv.wrap("<li></li>");  newDiv.append(toggleTrigger);  newDiv.append(showDiv);  showDiv.append(menuForm);  menuForm.html('<label for="navigation_label">Navigation Label</label><input id="navigation_label' + "0" + numLabelone++ + '" type="text" placeholder="Navigation Label" name="navigation_label"><label for="attribute">Attribute</label><input id="attribute' + "0" + numLabeltwo++ + '" type="text" type="text" placeholder="Attribute" name="attribute"><label for="url">URL</label><input id="url' + "0" + numLabelthree++ + '" type="text" type="text" placeholder="URL" name="url"><input type="button" value="Remove" class="button_link remove_button"> <input type="reset" value="Cancel" class="button_link">');  } });  var numToggle = 0; var numShow = 0; var numTarget = 0; var numForm = 0; var numLabelone = 0; var numLabeltwo = 0; var numLabelthree = 0; 
<table width="316px" border="0" cellspacing="0" cellpadding="0" id="table-data">  <tbody>  <tr>  <td width="20px"><input type="checkbox" style="width:20px;" value="1" name="checkbox"></td>  <td width="200px"><a href="/admin/feedbackmanager/sortby/2/sortdesc/0">Page Name</a></td>  <td width="20px"><a href="/admin/feedbackmanager/sortby/3/sortdesc/0">Add</a></td>  </tr>  <tr>  <td><input type="checkbox" style="width:20px;" value="1" name="checkbox" class="checkbox_check"></td>  <td class="td_name">Timeplot</td>  <td><input class="add_menu_item_table" name="add_menu_item" value="Add" type="button"></td>  </tr>  <tr>  <td><input type="checkbox" style="width:20px;" value="1" name="checkbox" class="checkbox_check"></td>  <td class="td_name">Operations Manuals</td>  <td><input class="add_menu_item_table" name="add_menu_item" value="Add" type="button"></td>  </tr>  <tr>  <td><input type="checkbox" style="width:20px;" value="1" name="checkbox" class="checkbox_check"></td>  <td class="td_name">Company Structure</td>  <td><input class="add_menu_item_table" name="add_menu_item" value="Add" type="button"></td>  </tr>  <tr>  <td><input type="checkbox" style="width:20px;" value="1" name="checkbox" class="checkbox_check"></td>  <td class="td_name">CMS Report</td>  <td><input class="add_menu_item_table" name="add_menu_item" value="Add" type="button"></td>  </tr>  <tr>  <td><input type="checkbox" style="width:20px;" value="1" name="checkbox" class="checkbox_check"></td>  <td class="td_name">Test Document</td>  <td><input class="add_menu_item_table" name="add_menu_item" value="Add" type="button"></td>  </tr>  <tr>  <td><input type="checkbox" style="width:20px;" value="1" name="checkbox" class="checkbox_check"></td>  <td class="td_name">Test CMS page</td>  <td><input class="add_menu_item_table" name="add_menu_item" value="Add" type="button"></td>  </tr>  </tbody> </table> 

stackoverflow.com

Value

A DOMString representing the value of the checkbox. This is never seen on the client-side, but on the server this is the value given to the data submitted with the checkbox’s name. Take the following example:

<form>  <div>  <input type="checkbox" id="subscribeNews" name="subscribe" value="newsletter">  <label for="subscribeNews">Subscribe to newsletter?</label>  </div>  <div>  <button type="submit">Subscribe</button>  </div> </form>

In this example, we’ve got a name of subscribe, and a value of newsletter. When the form is submitted, the data name/value pair will be subscribe=newsletter.

If the value attribute was omitted, the default value for the checkbox is on , so the submitted data in that case would be subscribe=on.

Additional attributes

In addition to the common attributes shared by all <input> elements, "checkbox" inputs support the following attributes:

Attribute Description
checked Boolean; if present, the checkbox is toggled on by default
value The string to use as the value of the checkbox when submitting the form, if the checkbox is currently toggled on

checked

A Boolean attribute indicating whether or not this checkbox is checked by default (when the page loads). It does not indicate whether this checkbox is currently checked: if the checkbox’s state is changed, this content attribute does not reflect the change. (Only the HTMLInputElement’s checked IDL attribute is updated.)

Unlike other browsers, Firefox by default persists the dynamic checked state of an <input> across page loads. Use the autocomplete attribute to control this feature.

value

The value attribute is one which all <input>s share; however, it serves a special purpose for inputs of type checkbox: when a form is submitted, only checkboxes which are currently checked are submitted to the server, and the reported value is the value of the value attribute. If the value is not otherwise specified, it is the string on by default. This is demonstrated in the section Value above.

Using checkbox inputs

We already covered the most basic use of checkboxes above. Let’s now look at the other common checkbox-related features and techniques you’ll need.

Handling multiple checkboxes

The example we saw above only contained one checkbox; in real-world situations you’ll be likely to encounter multiple checkboxes. If they are completely unrelated, then you can just deal with them all separately, as shown above. However, if they’re all related, things are not quite so simple.

For example, in the following demo we include multiple checkboxes to allow the user to select their interests (see the full version in the Examples section).

<fieldset>  <legend>Choose your interests</legend>  <div>  <input type="checkbox" id="coding" name="interest" value="coding">  <label for="coding">Coding</label>  </div>  <div>  <input type="checkbox" id="music" name="interest" value="music">  <label for="music">Music</label>  </div> </fieldset>

In this example you will see that we’ve given each checkbox the same name. If both checkboxes are checked and then the form is submitted, you’ll get a string of name/value pairs submitted like this: interest=coding&interest=music. When this string reaches the server, you need to parse it other than as an associative array, so all values, not only the last value, of interest are captured. For one technique used with PHP, see Handle Multiple Checkboxes with a Single Serverside Variable, for example.

Checking boxes by default

To make a checkbox checked by default, you simply give it the checked attribute. See the below example:

<fieldset>  <legend>Choose your interests</legend>  <div>  <input type="checkbox" id="coding" name="interest" value="coding" checked>  <label for="coding">Coding</label>  </div>  <div>  <input type="checkbox" id="music" name="interest" value="music">  <label for="music">Music</label>  </div> </fieldset>

Providing a bigger hit area for your checkboxes

In the above examples, you may have noticed that you can toggle a checkbox by clicking on its associated <label> element as well as on the checkbox itself. This is a really useful feature of HTML form labels that makes it easier to click the option you want, especially on small-screen devices like smartphones.

Beyond accessibility, this is another good reason to properly set up <label> elements on your forms.

Indeterminate state checkboxes

In addition to the checked and unchecked states, there is a third state a checkbox can be in: indeterminate. This is a state in which it’s impossible to say whether the item is toggled on or off. This is set using the HTMLInputElement object’s indeterminate property via JavaScript (it cannot be set using an HTML attribute):

inputInstance.indeterminate = true;

A checkbox in the indeterminate state has a horizontal line in the box (it looks somewhat like a hyphen or minus sign) instead of a check/tick in most browsers.

There are not many use cases for this property. The most common is when a checkbox is available that «owns» a number of sub-options (which are also checkboxes). If all of the sub-options are checked, the owning checkbox is also checked, and if they’re all unchecked, the owning checkbox is unchecked. If any one or more of the sub-options have a different state than the others, the owning checkbox is in the indeterminate state.

This can be seen in the below example (thanks to CSS Tricks for the inspiration). In this example we keep track of the ingredients we are collecting for a recipe. When you check or uncheck an ingredient’s checkbox, a JavaScript function checks the total number of checked ingredients:

  • If none are checked, the recipe name’s checkbox is set to unchecked.
  • If one or two are checked, the recipe name’s checkbox is set to indeterminate.
  • If all three are checked, the recipe name’s checkbox is set to checked.

So in this case the indeterminate state is used to state that collecting the ingredients has started, but the recipe is not yet complete.

 var overall = document.querySelector('input[id="EnchTbl"]');  var ingredients = document.querySelectorAll('ul input');   overall.addEventListener('click', function(e) {  e.preventDefault();  });   for(var i = 0; i < ingredients.length; i++) {  ingredients[i].addEventListener('click', updateDisplay);  }   function updateDisplay() {  var checkedCount = 0;  for(var i = 0; i < ingredients.length; i++) {  if(ingredients[i].checked) {  checkedCount++;  }  }   if(checkedCount === 0) {  overall.checked = false;  overall.indeterminate = false;  } else if(checkedCount === ingredients.length) {  overall.checked = true;  overall.indeterminate = false;  } else {  overall.checked = false;  overall.indeterminate = true;  }  }

Validation

Checkboxes do support validation (offered to all <input>s). However, most of the ValidityStates will always be false. If the checkbox has the required attribute, but is not checked, then ValidityState.valueMissing will be true.

Examples

The following example is an extended version of the «multiple checkboxes» example we saw above — it has more standard options, plus an «other» checkbox that when checked causes a text field to appear to enter a value for the «other» option. This is achieved with a simple block of JavaScript. The example also includes some CSS to improve the styling.

HTML

<form>  <fieldset>  <legend>Choose your interests</legend>  <div>  <input type="checkbox" id="coding" name="interest" value="coding">  <label for="coding">Coding</label>  </div>  <div>  <input type="checkbox" id="music" name="interest" value="music">  <label for="music">Music</label>  </div>  <div>  <input type="checkbox" id="art" name="interest" value="art">  <label for="art">Art</label>  </div>  <div>  <input type="checkbox" id="sports" name="interest" value="sports">  <label for="sports">Sports</label>  </div>  <div>  <input type="checkbox" id="cooking" name="interest" value="cooking">  <label for="cooking">Cooking</label>  </div>  <div>  <input type="checkbox" id="other" name="interest" value="other">  <label for="other">Other</label>  <input type="text" id="otherValue" name="other">  </div>  <div>  <button type="submit">Submit form</button>  </div>  </fieldset> </form>

CSS

html {  font-family: sans-serif; }  form {  width: 600px;  margin: 0 auto; }  div {  margin-bottom: 10px; }  fieldset {  background: cyan;  border: 5px solid blue; }  legend {  padding: 10px;  background: blue;  color: cyan; } 

JavaScript

var otherCheckbox = document.querySelector('input[value="other"]'); var otherText = document.querySelector('input[id="otherValue"]'); otherText.style.visibility = 'hidden';  otherCheckbox.onchange = function() {  if(otherCheckbox.checked) {  otherText.style.visibility = 'visible';  otherText.value = '';  } else {  otherText.style.visibility = 'hidden';  } };

Specifications

Specification Status Comment
HTML Living Standard
The definition of ‘<input type=»checkbox»>’ in that specification.
Living Standard  
HTML5
The definition of ‘<input type=»checkbox»>’ in that specification.
Recommendation  

developer.mozilla.org


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Adblock
detector