猿问

如何在Javascript中设置HTML5必需属性?

我试图在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验证布尔属性的正确方法是什么?


的jsfiddle


你问,这个属性有什么价值?

HTML5验证required属性记录为Boolean:


4.10.7.3.4 required属性

该required属性是布尔属性。指定时,元素是必需的。


关于如何定义boolean属性有很多令人费解的事。HTML5规范说明:


元素上存在布尔属性表示真值,缺少属性表示false值。


如果该属性存在,则其值必须是空字符串,或者是属性的规范名称的ASCII不区分大小写匹配的值,没有前导或尾随空格。


这意味着您可以通过两种不同的方式指定required 布尔属性:


edName.attributes.required = ""; //the empty string

edName.attributes.required = "required"; //the attribute's canonical name

但是,什么是属性的值真的?

当你查看我的问题的jsFiddle时,你会注意到如果required在标记中定义了属性:


<input id="edName" type="text" id="name" required>

那么属性的值不是空字符串,也不是属性的规范名称:


edName.attributes.required = [object Attr]

这可能会导致解决方案。


至尊宝的传说
浏览 534回答 3
3回答

慕雪6442864

和jquery版本:$('input').attr('required', true)$('input').attr('required', false)我知道这是不可能的,但也许有人会觉得这很有帮助:)
随时随地看视频慕课网APP
我要回答