required
является НЕ пользовательский атрибут; это часть стандарта HTML5. И true
не является допустимым значением для него. Вероятно, поэтому он не работает.
Если вам нужны пользовательские атрибуты, правильный способ соблюдения стандартов - это использовать префикс data-
. Это гарантирует, что никогда не будет столкновения с будущими дополнениями к стандартному набору атрибутов HTML.
В этом случае, если вы хотите использовать атрибут HTML5 required
, он работает как логическое атрибут, похожий на disabled
и readonly
, что вам нужно только указать имя атрибута, без значения, для того, чтобы применить , Стандарты HTML5 код будет выглядеть следующим образом:
<input type="text" name="foo" required maxlength="100">
Это добавить required
свойства элемента в DOM. Затем вы можете включить или отключить это свойство с помощью Javascript, установив его на true
или false
(т.е. логические значения, а не строки). И вы можете получить доступ в JS, просто проверив, установлен ли он.
Обратите внимание, что ваш JS-код должен будет учитывать тот факт, что в последних браузерах, совместимых с HTML5, браузер уже проведет проверку, если у вас есть набор свойств required
; вам может потребоваться отбросить часть вашего существующего кода при работе в современных браузерах или, по крайней мере, адаптировать его для обработки всех случаев.
Если вы действительно хотите иметь нестандартное свойство, вы должны использовать data-required="whatever"
, но в этом случае это не обязательно, если вы не хотите существенно отличаться от required
к стандарту HTML5.