Я пытаюсь отметить поле ввода text
как обязательное в Javascript.
<input id="edName" type="text" id="name">
Если поле первоначально отмечено как required
:
<form>
<input id="edName" type="text" id="name" required><br>
<input type="submit" value="Search">
</form>
когда пользователь пытается отправить, им дана ошибка проверки:
Но теперь я хочу установить атрибут required
в "runtime", через Javascript:
<form>
<input id="edName" type="text" id="name"><br>
<input type="submit" value="Search">
</form>
с соответствующим script:
//recommended W3C HTML5 syntax for boolean attributes
document.getElementById("edName").attributes["required"] = "";
За исключением случаев, когда я отправляю сейчас, проверка проверки не выполняется. Блок
Каков правильный способ установки логического атрибута проверки HTML5?
Какое значение атрибута вы задаете?
Атрибут HTML5 validation required
задокументирован как Boolean
:
4.10.7.3.4
required
Атрибут
required
является атрибутом boolean. Когда указано, элемент требуется.
Существует много способов отжимания атрибута Boolean
. Спецификации HTML5:
Наличие логического атрибута для элемента представляет истинное значение, а отсутствие атрибута представляет ложное значение.
Если атрибут присутствует, его значение должно быть либо пустой строкой, либо значением, которое не соответствует значению ASCII для канонического имени атрибута, без начального или конечного пробела.
Это означает, что вы можете указать атрибут required
boolean двумя разными способами:
edName.attributes.required = ""; //the empty string
edName.attributes.required = "required"; //the attribute canonical name
Но каково значение атрибута на самом деле?
Когда вы посмотрите на мою jsFiddle этой проблемы, вы заметите, что если в разметке определен атрибут required
:
<input id="edName" type="text" id="name" required>
Тогда значение атрибута не пустая строка, а также каноническое имя атрибута:
edName.attributes.required = [object Attr]
Это может привести к решению.