我试图在Javascript text中根据需要标记输入框.
<input id="edName" type="text" id="name">
Run Code Online (Sandbox Code Playgroud)
如果该字段最初标记为required:
<form>
<input id="edName" type="text" id="name" required><br>
<input type="submit" value="Search">
</form>
Run Code Online (Sandbox Code Playgroud)
当用户尝试提交时,他们会收到验证错误:

但现在我想通过Javascript required在"运行时"设置属性:
<form>
<input id="edName" type="text" id="name"><br>
<input type="submit" value="Search">
</form>
Run Code Online (Sandbox Code Playgroud)
与相应的脚本:
//recommended W3C HTML5 syntax for boolean attributes
document.getElementById("edName").attributes["required"] = "";
Run Code Online (Sandbox Code Playgroud)
除非我现在提交,否则没有验证检查,没有阻止.
设置HTML5验证布尔属性的正确方法是什么?
HTML5验证required属性记录为Boolean:
4.10.7.3.4
required属性该
required属性是布尔属性.指定时,元素是必需的.
关于如何定义boolean属性有很多令人费解的事.HTML5规范说明:
元素上存在布尔属性表示真值,缺少属性表示false值.
如果该属性存在,则其值必须是空字符串,或者是属性的规范名称的ASCII不区分大小写匹配的值,没有前导或尾随空格.
这意味着您可以通过两种不同的方式指定required 布尔属性:
edName.attributes.required …Run Code Online (Sandbox Code Playgroud) 我正在制作一个使用<input>内部的自定义自动完成指令,但是我在确定如何将'required'属性传递下来时遇到了一些麻烦,其他具有我可以看到但是'required'的值的属性似乎无论是否设置都是空白的.我的回复声明的第一部分如下:
return {
restrict: 'E',
template: tpl,
replace: true,
scope: {
suggestionsPath: '=autoComplete',
method: '@method',
term: '@term',
required: '@required',
ngModel: "="
}...
Run Code Online (Sandbox Code Playgroud)
谢谢!