У меня есть форма 4 варианта (они могут быть флажками или радио).Проверка флажков в HTML
Я хочу выбрать несколько вариантов, но один из них является обязательным.
Я знаю, что это возможно в JS/jQuery, но я хочу базовое решение HTML/CSS.
У меня есть форма 4 варианта (они могут быть флажками или радио).Проверка флажков в HTML
Я хочу выбрать несколько вариантов, но один из них является обязательным.
Я знаю, что это возможно в JS/jQuery, но я хочу базовое решение HTML/CSS.
Чтобы иметь возможность проверять несколько входов, они должны быть флажками. (Они могли быть радио кнопки с разными названиями, но вы не смогли бы снять пометку на них один раз проверил.)
Так используйте флажки, и показать кнопку Отправить, если таковые будут проверены, используя general sibling selector (~):
input[type="Submit"] {
display: none;
}
input:checked ~ input[type="Submit"] {
display: inline;
}
<input id="c1" type="checkbox"><label for="c1">First</label><br>
<input id="c2" type="checkbox"><label for="c2">Second</label><br>
<input id="c3" type="checkbox"><label for="c3">Third</label><br>
<input id="c4" type="checkbox"><label for="c4">Fourth</label><br>
<input type="Submit">
Если вход не нажат, отобразите отключенную кнопку отправки. Когда один или несколько входов щелкнул, показывают включена кнопка отправки только:
input[type="Submit"]:not([disabled]) {
display: none;
}
input:checked ~ input[type="Submit"]:not([disabled]) {
display: inline;
}
input:checked ~ input[disabled] {
display: none;
}
<input id="c1" type="checkbox"><label for="c1">First</label><br>
<input id="c2" type="checkbox"><label for="c2">Second</label><br>
<input id="c3" type="checkbox"><label for="c3">Third</label><br>
<input id="c4" type="checkbox"><label for="c4">Fourth</label><br>
<input type="Submit" disabled>
<input type="Submit">
_/\\ _ просто потрясающе – Arjun
Во втором подходе по-прежнему можно отправить недопустимую форму с помощью вкладки, чтобы перемещаться и нажимать пробел. – falsarella
@falsarella, отличная точка! Теперь отредактирован, чтобы дать кнопке «Отправить» отрицательный tabindex. –
Вы можете использовать следующие, обязательные для заполнения.
<input type="radio" name="name" required>
Какой из них не требуется, не будет проверен, если он отмечен галочкой или нет.
Вы можете выбрать только одну радиокнопку с заданным именем. –
Вы можете сделать это в html5, используя required
атрибут Как
<input type="checkbox" required name="your_checkbox_name">
Это говорит браузеру, что форма не должна быть поданным без чекбокс быть checked.Although я рекомендую java-script
, поскольку не все браузеры быть в состоянии признать это.
Или
Если вы хотите, чтобы обнаружить, если по крайней мере, один флажок, как предложено @RickHitchcock в комментарии, Вы можете использовать
span {
display: inline;
color: red;
}
input[type="Submit"],
input:checked ~ span {
display: none;
}
input:checked ~ input[type="Submit"] {
display: inline;
}
<form action="#" method="post">
<input type="checkbox" />Checkbox 1
<br />
<input type="checkbox" />Checkbox 1
<br />
<input type="checkbox" />Checkbox 1
<br />
<input type="submit" value="Submit" /><span>! Please check at least one checkbox</span>
</form>
Форма не может быть отправлена, если этот конкретный вход не был проверен. –
@RickHitchcock Да, я думаю, это то, чего хотел OP. –
Я уверен, что ОП просит группу флажков с требованием «Выберите один или несколько», а не «Выберите этот конкретный номер и нуль или более других» – Quentin
В дополнение к ответу @Rick Хичкока, я думаю, что вы хотите, чтобы показать пользователю кнопку submit, но он будет отключен, пока не будет проверен один из флажков.
Если да, то вы можете использовать pointer-events
(во всех современных браузерах: http://caniuse.com/#feat=pointer-events), как это:
input[type="Submit"] {
opacity:0.5;
pointer-events:none;
/* animation added for fancy ;) */
transition:all .2s ease;
}
input:checked ~ .button-wrapper input[type="Submit"] {
opacity:1;
pointer-events:all;
}
.button-wrapper {
position:relative;
display:inline-block;
}
.button-wrapper:before {
content:"";
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
z-index:1;
}
input:checked ~ .button-wrapper:before {
display:none;
}
<input id="c1" type="checkbox"><label for="c1">First</label><br>
<input id="c2" type="checkbox"><label for="c2">Second</label><br>
<input id="c3" type="checkbox"><label for="c3">Third</label><br>
<input id="c4" type="checkbox"><label for="c4">Fourth</label><br>
<div class="button-wrapper">
<input type="Submit" tabindex="-1">
</div>
Редактировать Я добавил "маску" в .button-wrapper:before
так будет работать в старых браузерах.
'pointer-events' не работает в IE10 и ниже. Если пользователь просматривает IE10, они смогут щелкнуть кнопку без проверки флажков. – rblarsen
@rblarsen, спасибо за ваш комментарий. Я также обновил свой ответ, чтобы поддержать старого. Я упоминал, что 'pointer-events' работает в« современных браузерах »и добавляет ссылку« caniuse ». Кроме того, ему нужно все равно проверять событие отправки (по крайней мере, сервер), это не проблема отправки формы, даже кнопка скрыта;) –
Вы можете обойти «указатели-события», не работающие в «IE10 и ниже», с после обхода JS: http://codepen.io/jonathan/pen/BriCb. Также IE11 допускает события-указатели, но только если свойство 'display' имеет значение' block' или 'inline-block'. –
Попробуйте:
<input id="c3" type="checkbox" required><label for="c3">Third</label><br>
<input id="c4" type="checkbox" required><label for="c4">Fourth</label><br>
Или вы можете попробовать это с помощью JQuery для проверки HTML флажок:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Makes "field" always required. Nothing and blanks are invalid. </title>
<link rel="stylesheet" href="http://jqueryvalidation.org/files/demo/site-demos.css">
</head>
<body>
<form id="myform">
<label for="field">Required: </label>
<input type="text" class="left" id="field" name="field">
<br/>
<input type="submit" value="Validate!">
</form>
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://jqueryvalidation.org/files/dist/jquery.validate.min.js"> </script>
<script src="http://jqueryvalidation.org/files/dist/additional- methods.min.js"></script>
<script>
// just for the demos, avoids form submit
jQuery.validator.setDefaults({
debug: true,
success: "valid"
});
$("#myform").validate({
rules: {
field: {
required: true
}
}
});
</script>
</body>
</html>
required
это путь HTML проверяет вещи
Вы правильно прочитали мой вопрос: «Я хочу выбрать несколько опций, но ** обязателен **». не все они являются обязательными ... –
Почему пометить вопрос с JavaScript если вы хотите решение без javascript? – Arg0n
HTML5 имеет эту функцию, см. [HTML5: Как использовать атрибут «required» с полем ввода «радио»] (http://stackoverflow.com/questions/8287779/html5-how-to-use-the -required-attribute-with-a-radio-input-field) –