我试图在 Javascript 中将 text
输入框标记为 需要。
<input id="edName" type="text" id="name">
如果字段最初标记为 required
:
<form>
<input id="edName" type="text" id="name" required><br>
<input type="submit" value="Search">
</form>
当用户试图提交时,会出现一个验证错误:
但是现在我想通过 Javascript 将 required
属性设置为 “运行时间”:
<form>
<input id="edName" type="text" id="name"><br>
<input type="submit" value="Search">
</form>
相应的脚本:
//recommended W3C HTML5 syntax for boolean attributes
document.getElementById("edName").attributes["required"] = "";
除了我现在提交的时候,没有验证检查,没有阻止。
设定 HTML5验证布尔属性的 正确方法是什么?
HTML5验证 记录了 required
属性作为 Boolean
:
4.10.7.3.4
required
属性
required
属性是 boolean attribute。当指定时,元素是必需的。
关于如何定义 boolean
属性有很多令人头疼的问题:
The presence of a boolean attribute on an element represents the true value, and the absence of the attribute represents the false value.
如果存在属性,那么它的值必须是空字符串,或者是与属性的规范名称不区分大小写的 ASCII 匹配的值,没有前导空格或尾随空格。
这意味着您可以通过两种不同的方式指定 required
布尔型属性:
edName.attributes.required = ""; //the empty string
edName.attributes.required = "required"; //the attribute's canonical name
当您查看 解决这个问题时,您会注意到如果在标记中定义了 required
属性:
<input id="edName" type="text" id="name" required>
然后该属性的值是空字符串 不是,也不是该属性的规范名称:
edName.attributes.required = [object Attr]
也许能找到解决办法。