При использовании более новых браузеров, поддерживающих HTML5 (например, FireFox 4);
и поле формы имеет атрибут required='required'
;
и поле формы пустое / пустое;
и кнопка отправки нажата;
браузеры обнаруживают, что поле «обязательное» пусто и не отправляют форму;
вместо этого браузер показывает подсказку с просьбой ввести текст в поле.
Теперь вместо одного текстового поля у меня есть группа флажков , из которых по крайней мере один должен быть отмечен / выбран пользователем.
Как я могу использовать required
атрибут HTML5 для этой группы флажков? (Поскольку необходимо установить только один из флажков, я не могу поставить required
атрибут на каждый флажок)
пс. Я использую simple_form , если это имеет значение.
ОБНОВИТЬ
Может ли атрибут HTML 5multiple
быть полезным здесь? Кто-нибудь использовал это раньше, чтобы сделать что-то похожее на мой вопрос?
ОБНОВИТЬ
Это кажется , что эта функция не поддерживается HTML5 спецификации: проблемно-111: Что делает вход @ требуется среднее для @type = флажок.?
(Статус проблемы: проблема была помечена как закрытая без ущерба. ) И вот объяснение .
ОБНОВЛЕНИЕ 2
Это старый вопрос, но он хотел уточнить, что первоначальная цель этого вопроса состояла в том, чтобы иметь возможность сделать вышеупомянутое без использования Javascript - то есть с использованием способа HTML5. Оглядываясь назад, я должен был сделать «без Javascript» более абсурдным.
источник
Ответы:
К сожалению, HTML5 не предоставляет готового способа сделать это.
Однако, используя jQuery, вы можете легко контролировать, если в группе флажков есть хотя бы один проверенный элемент.
Рассмотрим следующий фрагмент DOM:
Вы можете использовать это выражение:
который возвращает,
true
если хотя бы один элемент проверен. Исходя из этого, вы можете реализовать проверку.источник
Это простой трюк. Это код jQuery, который может использовать проверку html5, изменяя
required
свойства, если они установлены. Ниже приведен ваш HTML-код (убедитесь, что вы добавили необходимые для всех элементов в группе.)Ниже приведен скрипт jQuery, который отключает дальнейшую проверку проверки, если какой-либо из них выбран. Выберите, используя элемент name.
Небольшое замечание: поскольку вы используете проверку html5, убедитесь, что вы выполнили ее до того, как она будет проверена, т.е. перед отправкой формы.
источник
Я думаю, что нет стандартного HTML5-способа сделать это, но если вы не возражаете против использования библиотеки jQuery, я смог добиться проверки « группы флажков » с помощью функции проверки webshims « group-required »:
В документах для требуемых для группы говорят:
И вот пример того, как вы бы это использовали:
В основном я использую webshims, чтобы заполнить функции HTML5, но у него также есть несколько замечательных дополнительных расширений, подобных этому.
Это даже позволяет вам писать свои собственные правила валидации. Например, мне нужно было создать группу флажков, которая не была бы основана на имени входа, поэтому я написал для этого собственное правило валидности ...
источник
HTML5 напрямую не поддерживает необходимость установки только одного / хотя бы одного флажка в группе флажков. Вот мое решение с использованием Javascript:
HTML
JAVASCRIPT
Javascript будет гарантировать, что будет установлен хотя бы один флажок, а затем потребует всю группу флажков. Если один флажок, который отмечен, становится не отмеченным, то для него снова потребуются все флажки!
источник
У меня была такая же проблема, и я решил:
HTML:
JS:
https://jsfiddle.net/oywLo5z4/
источник
Вдохновленный ответами @thegauraw и @Brian Woodward, вот что я собрал для пользователей JQuery, включая пользовательское сообщение об ошибке проверки:
Обратите внимание, что в моей форме некоторые флажки установлены по умолчанию.
Может быть, некоторые из вас, JavaScript / JQuery, могли бы еще больше усилить это?
источник
мы можем сделать это легко с html5, просто нужно добавить код jquery
демонстрация
HTML
Jquery
источник
Я добавил невидимое радио в группу флажков. Если выбран хотя бы один параметр, радио также устанавливается на проверку. Когда все параметры отменены, радио также настроено на отмену. Поэтому в форме используется радио-подсказка «Пожалуйста, отметьте хотя бы один вариант»
display: none
потому что радио не может быть сфокусировано.HTML
Javascript
CSS
https://jsfiddle.net/codus/q6ngpjyc/9/
источник
radio
sopacity
в 0 и установитьopacity
в 1 при отправке, чтобы мы могли контролировать, появляется красный контур или нет.visibility: hidden
илиdisplay: none
просто чтобы не испачкать удобство использования. Потому что программы чтения с экрана и другие специальные инструменты, вероятно, найдут скрытую кнопку-переключатель.Привет, просто используйте текстовое поле дополнительно к группе флажков. При нажатии на любой флажок введите значения в это текстовое поле. Сделайте так, чтобы это текстовое поле было обязательным и доступно только для чтения.
источник
Я понимаю, что здесь есть масса решений, но я обнаружил, что ни одно из них не соответствует всем моим требованиям:
name
для отправки проблем Github через их API, и я использовал имяlabel[]
для назначения ярлыков во многих полях формы (два списка флажков и несколько селекторов и текстовых полей) - при условии, что я мог бы добиться этого без их совместного использования то же имя, но я решил попробовать, и это сработало.Единственное требование для этого - JQuery. Вы можете объединить это с отличным решением @ ewall для добавления пользовательских сообщений об ошибках валидации.
источник
Вот еще один простой трюк с использованием Jquery!
HTML
JQuery
Вот и все .. это работает, потому что, если ни один из флажков не установлен, ничего относительно группы флажков (включая ее имя) не публикуется на сервере
источник
Пытаться:
или
Более конкретно:
Когда вы читаете данные из массива checkbox, убедитесь, что массив имеет:
В таком случае:
источник