跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaScript大前端

JavaScript 表单验证禁用与选择框编程详解

表单验证禁用可通过 novalidate 属性或 formNoValidate 按钮实现,支持 JavaScript 动态控制。文章深入解析了选择框编程核心,涵盖 HTMLSelectElement 与 HTMLOptionElement 的关键属性,如 options 集合管理、选中项索引及值获取规则。推荐使用专用属性替代标准 DOM 操作以提升跨浏览器兼容性,同时注意选择框 change 事件在选中时立即触发的特殊行为,优化表单交互体验。

协议工匠发布于 2024/10/1更新于 2026/7/1728 浏览
JavaScript 表单验证禁用与选择框编程详解

表单验证禁用

通过指定 novalidate 属性可以禁止对表单进行任何验证。这个值也可以通过 JavaScript 属性 noValidate 检索或设置,设置为 true 表示属性存在,设置为 false 表示属性不存在:

document.forms[0].noValidate = true; // 关闭验证

如果一个表单中有多个提交按钮,那么可以给特定的提交按钮添加 formnovalidate 属性,指定通过该按钮无须验证即可提交表单。在这个例子中,第一个提交按钮会让表单像往常一样验证数据,第二个提交按钮则禁用了验证,可以直接提交表单。我们也可以使用 JavaScript 来设置这个属性:

// 关闭验证
document.forms[0].elements["btnNoValidate"].formNoValidate = true;

选择框编程

选择框是使用 <select> 和 <option> 元素创建的。为方便交互,HTMLSelectElement 类型在所有表单字段的公共能力之外又提供了以下属性和方法:

  • add(newOption, relOption):在 relOption 之前向控件中添加新的选项。
  • multiple:布尔值,表示是否允许多选,等价于 HTML 的 multiple 属性。
  • options:控件中所有 <option> 元素的 HTMLCollection。
  • remove(index):移除给定位置的选项。
  • selectedIndex:选中项基于 0 的索引值,如果没有选中项则为 -1。对于允许多选的列表,始终是第一个选项的索引。
  • size:选择框中可见的行数,等价于 HTML 的 size 属性。

选择框的 type 属性可能是 "select-one" 或 "select-multiple",具体取决于 multiple 属性是否存在。当前选中项根据以下规则决定选择框的 value 属性:

  • 如果没有选中项,则选择框的值是空字符串。
  • 如果有一个选中项,且其 value 属性有值,则选择框的值就是选中项 value 属性的值。即使 value 属性的值是空字符串也是如此。
  • 如果有一个选中项,且其 value 属性没有指定值,则选择框的值是该项的文本内容。
  • 如果有多个选中项,则选择框的值根据前两条规则取得第一个选中项的值。

来看下面的选择框示例结构:

<select name="location">
  <option value="Sunnyvale, CA">Sunnyvale</option>
  <option value="">China</option>
  <option>Australia</option>
</select>

如果选中这个选择框中的第一项,则字段的值就是 "Sunnyvale, CA"。如果文本为 "China" 的项被选中,则字段的值是一个空字符串,因为该项的 value 属性是空字符串。如果选中最后一项,那么字段的值是 "Australia",因为该元素没有指定 value 属性。

每个 <option> 元素在 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 事件。

目录

  1. 表单验证禁用
  2. 选择框编程
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 嵌入式内核调试技巧:如何快速定位系统问题
  • Figma Make 实测:AI 能否辅助完成前端开发
  • 本地免费部署 Llama 3.1 大模型详细教程
  • Spring Boot 数据缓存集成与性能优化实战
  • RabbitMQ 核心概念与六种常用模式解析
  • Pi0 机器人大模型在昇腾 A2 上的部署与性能测评
  • C++ 运算符重载:自定义类型的运算扩展
  • MCP 协议层详解:深入分析 Python SDK 中的实现机制
  • OpenCode 开源 AI 编程助手工具介绍
  • 家庭 AI 助手实战:QQ 机器人接入 OpenClaw
  • 本地 Docker 部署 Appsmith 及远程访问配置
  • 数据结构空间复杂度详解:概念与常见计算示例
  • MySQL 高可用集群搭建实战:双主双活 + Keepalived
  • 2024 AI 行业复盘:从百模大战到头部竞速的变革
  • Java 集合常见问题总结(1)
  • Flutter 三方库 wallet_connect 的鸿蒙适配指南:Web3 钱包连接与 DApp 授权
  • 昇腾 NPU 部署 Llama 大模型:全流程实战与常见问题排查
  • DeepSeek 模型系列演进与各版本核心特性解析
  • FPGA 是什么?一文读懂现场可编程门阵列
  • Spring AI MCP Server 集成与实战

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online