通过指定novalidate 属性可以禁止对表单进行任何验证:
这个值也可以通过JavaScript 属性noValidate 检索或设置,设置为true 表示属性存在,设置为 false 表示属性不存在: document.forms[0].noValidate = true; // 关闭验证 如果一个表单中有多个提交按钮,那么可以给特定的提交按钮添加formnovalidate 属性,指定 通过该按钮无须验证即可提交表单: 在这个例子中,第一个提交按钮会让表单像往常一样验证数据,第二个提交按钮则禁用了验证,可 以直接提交表单。我们也可以使用JavaScript 来设置这个属性: // 关闭验证 document.forms[0].elements["btnNoValidate"].formNoValidate = true; 选择框编程 选择框是使用和元素创建的。为方便交互,HTMLSelectElement 类型在所有 表单字段的公共能力之外又提供了以下属性和方法。 add(newOption, relOption):在relOption 之前向控件中添加新的。 multiple:布尔值,表示是否允许多选,等价于HTML 的multiple 属性。 options:控件中所有元素的HTMLCollection。 remove(index):移除给定位置的选项。 selectedIndex:选中项基于0 的索引值,如果没有选中项则为–1。对于允许多选的列表,始 终是第一个选项的索引。 size:选择框中可见的行数,等价于HTML 的size 属性。 选择框的type 属性可能是"select-one"或"select-multiple",具体取决于multiple 属性 是否存在。当前选中项根据以下规则决定选择框的value 属性。 如果没有选中项,则选择框的值是空字符串。 如果有一个选中项,且其value 属性有值,则选择框的值就是选中项value 属性的值。即使 value 属性的值是空字符串也是如此。 如果有一个选中项,且其value 属性没有指定值,则选择框的值是该项的文本内容。 如果有多个选中项,则选择框的值根据前两条规则取得第一个选中项的值。 来看下面的选择框: Sunnyvale Los Angeles Mountain View China Australia 如果选中这个选择框中的第一项,则字段的值就是"Sunnyvale, CA"。如果文本为"China"的项 被选中,则字段的值是一个空字符串,因为该项的value 属性是空字符串。如果选中最后一项,那么 字段的值是"Australia",因为该元素没有指定value 属性。 每个元素在DOM 中都由一个HTMLOptionElement 对象表示。HTMLOptionElement 类型为方便数据存取添加了以下属性。 index:选项在options 集合中的索引。 label:选项的标签,等价于HTML 的label 属性。 selected:布尔值,表示是否选中了当前选项。把这个属性设置为true 会选中当前选项。 text:选项的文本。 value:选项的值(等价于HTML 的value 属性)。 大多数属性是为了方便存取选项数据。可以使用常规DOM 功能存取这些信息,只是效 率比较低,如下面的例子所示: let selectbox = document.forms[0].elements["location"]; // 不推荐 let text = selectbox.options[0].firstChild.nodeValue; // 选项文本 let value = selectbox.options[0].getAttribute("value"); // 选项值 以上代码使用标准的DOM技术获取了选择框中第一个选项的文本和值。下面再比较一下使用特殊 选项属性的代码: let selectbox = document.forms[0].elements["location"]; // 推荐 let text = selectbox.options[0].text; // 选项文本 let value = selectbox.options[0].value; // 选项值 在操作选项时,最好使用特定于选项的属性,因为这些属性得到了跨浏览器的良好支持。在操作 DOM 节点时,与表单控制实际的交互可能会因浏览器而异。不推荐使用标准DOM 技术修改 元素的文本和值。 最后强调一下,选择框的change 事件与其他表单字段是不一样的。其他表单字段会在自己的值改 变后触发change 事件,然后字段失去焦点。而选择框会在选中一项时立即触发change 事件。