当前位置: 首页 > article >正文

HTML 中的 input 标签详解

HTML 中的 input 标签详解

一、基础概念

1. 定义与作用

HTML 中的 <input> 标签是表单元素的核心组件,用于创建各种用户输入字段。作为一个空标签(没有闭合标签),它通过 type 属性来决定呈现何种输入控件,是实现用户与网页交互的基础元素。

2. 基本语法
<input type="text" name="username" value="默认值">
  • type:指定输入类型,如 textpasswordradio 等。
  • name:表单提交时的键名,用于服务器端接收数据。
  • value:输入的值,不同类型有不同表现。

二、常见 input 类型

1. 文本输入(text)

最基本的输入类型,用于单行文本输入。

<input type="text" name="username" placeholder="请输入用户名">
  • placeholder:提供提示文本,输入内容时自动消失。
2. 密码输入(password)

输入内容会被掩码(通常用圆点)隐藏。

<input type="password" name="password" placeholder="请输入密码">
3. 单选按钮(radio)

用于从多个选项中选择一个。

<input type="radio" name="gender" value="male" checked><input type="radio" name="gender" value="female">
  • 同一组单选按钮需使用相同的 name 属性。
  • checked 属性设置默认选中项。
4. 复选框(checkbox)

用于多选场景。

<input type="checkbox" name="hobby" value="reading" checked> 阅读
<input type="checkbox" name="hobby" value="swimming"> 游泳
  • checked 属性设置默认选中项。
5. 文件上传(file)

允许用户上传文件。

<input type="file" name="avatar" accept="image/*">
  • accept:限制上传文件类型,如 image/* 表示所有图片格式。
6. 提交按钮(submit)

用于提交表单数据到服务器。

<input type="submit" value="提交">
7. 重置按钮(reset)

用于重置表单所有输入项为初始值。

<input type="reset" value="重置">
8. 隐藏字段(hidden)

用于存储不显示给用户但随表单提交的数据。

<input type="hidden" name="userId" value="123">

三、HTML5 新增 input 类型

1. 电子邮件(email)

专门用于输入电子邮件地址,支持浏览器内置验证。

<input type="email" name="email" placeholder="your@email.com">
2. 网址(url)

用于输入 URL,自动验证格式。

<input type="url" name="website" placeholder="https://example.com">
3. 数字(number)

只能输入数字,支持 minmaxstep 属性。

<input type="number" name="age" min="1" max="100" step="1">
4. 范围选择(range)

通过滑块选择值,需指定 minmaxstep

<input type="range" name="volume" min="0" max="100" step="5" value="50">
5. 日期与时间
  • date:选择日期(年-月-日)
  • time:选择时间(时:分:秒)
  • datetime-local:选择日期和时间
<input type="date" name="birthdate">
<input type="time" name="appointment">
<input type="datetime-local" name="meeting">
6. 搜索框(search)

外观与文本框相似,但在某些浏览器中会有特殊处理(如清除按钮)。

<input type="search" name="query" placeholder="搜索...">
7. 电话号码(tel)

用于输入电话号码,但不强制验证格式(因全球格式差异大)。

<input type="tel" name="phone" placeholder="请输入电话号码">

四、重要属性详解

1. 表单相关属性
  • name:表单提交时的键名。
  • value:输入的值,对提交起作用。
  • disabled:禁用输入框,值不会被提交。
  • readonly:只读模式,值会被提交但不可编辑。
2. 验证属性
  • required:必填项,提交前必须填写。
  • minlengthmaxlength:限制文本长度。
  • minmax:限制数字或日期范围。
  • pattern:使用正则表达式验证输入格式。
<input type="text" name="zipcode" pattern="[0-9]{6}" placeholder="邮政编码">
3. 辅助属性
  • placeholder:提示文本。
  • autofocus:页面加载时自动聚焦。
  • autocomplete:启用或禁用自动完成功能(onoff)。
  • spellcheck:启用或禁用拼写检查(truefalse)。

五、事件处理

<input> 标签支持多种事件,可通过 JavaScript 监听并响应。

1. 常见事件
  • onchange:值改变且失去焦点时触发。
  • oninput:值改变时实时触发。
  • onfocus:获得焦点时触发。
  • onblur:失去焦点时触发。
2. 示例代码
<input type="text" id="username" oninput="validate(this)">
<script>function validate(input) {if (input.value.length < 3) {input.style.borderColor = 'red';} else {input.style.borderColor = 'green';}}
</script>

六、样式与美化

虽然 <input> 的外观受浏览器默认样式影响,但可通过 CSS 进行定制。

1. 基本样式修改
input[type="text"] {width: 100%;padding: 10px;border: 1px solid #ccc;border-radius: 4px;box-sizing: border-box;
}
2. 自定义单选按钮和复选框

通过隐藏原生控件,使用 CSS 创建自定义样式。

<style>.custom-checkbox input {display: none;}.custom-checkbox span {display: inline-block;width: 20px;height: 20px;border: 1px solid #ccc;border-radius: 3px;}.custom-checkbox input:checked + span {background-color: #2196F3;}
</style>
<div class="custom-checkbox"><input type="checkbox" id="customCheck"><span></span><label for="customCheck">自定义复选框</label>
</div>

七、与 JavaScript 的交互

通过 JavaScript 可动态操作 <input> 元素。

1. 获取和设置值
const input = document.getElementById('username');
// 获取值
const value = input.value;
// 设置值
input.value = '新值';
2. 动态禁用/启用
input.disabled = true; // 禁用
input.disabled = false; // 启用
3. 表单验证
function validateForm() {const email = document.getElementById('email');if (!email.checkValidity()) {alert('请输入有效的电子邮件地址');return false;}return true;
}

八、无障碍性考虑

为提高可访问性,应注意以下几点:

1. 使用 label 标签
<label for="username">用户名:</label>
<input type="text" id="username" name="username">
2. 添加 ARIA 属性
<input type="text" id="search" aria-label="搜索产品">
3. 提供错误提示
<input type="email" id="email" aria-describedby="emailError">
<span id="emailError" class="error" aria-live="polite"></span>

九、实际应用场景

1. 用户注册表单

包含文本、密码、单选、复选框等多种输入类型。

2. 搜索功能

使用 search 类型或普通文本框。

3. 数据筛选

结合 rangenumber 实现数值范围筛选。

4. 文件上传

图片、文档等资源上传功能。

十、兼容性与注意事项

  1. 新的 input 类型在旧浏览器(如 IE)中可能降级为文本框。
  2. 不同浏览器对样式和验证的实现可能略有差异。
  3. 使用自定义样式时需注意保持交互体验一致。

通过合理使用 <input> 标签及其属性,可以创建出功能丰富、用户友好的表单界面,满足各种 Web 应用的需求。

相关文章:

HTML 中的 input 标签详解

HTML 中的 input 标签详解 一、基础概念 1. 定义与作用 HTML 中的 <input> 标签是表单元素的核心组件&#xff0c;用于创建各种用户输入字段。作为一个空标签&#xff08;没有闭合标签&#xff09;&#xff0c;它通过 type 属性来决定呈现何种输入控件&#xff0c;是实…...

Python 在自动驾驶数据标签中的应用:如何让 AI 读懂道路?

Python 在自动驾驶数据标签中的应用:如何让 AI 读懂道路? 在自动驾驶系统中,数据就是生命线。不管是摄像头、激光雷达还是雷达传感器,这些设备每天都能产生 海量数据,但如果这些数据没有被正确标注,它们对 AI 来说毫无意义。那么,如何让自动驾驶系统准确理解道路环境呢…...

微信小程序之按钮短时间内被多次点击问题

做项目的时候碰到这个问题&#xff0c;按钮的功能做好了&#xff0c;但是总会出现按的太快&#xff0c;出现不可预料的问题。 解决方法之一&#xff1a;借助函数节流来实现 1、创建一个工具包&#xff08;throttle.js&#xff09;,通过封装一个高阶函数&#xff0c;对函数的执…...

动态规划(3)学习方法论:构建思维模型

引言 动态规划是算法领域中一个强大而优雅的解题方法,但对于许多学习者来说,它也是最难以掌握的算法范式之一。与贪心算法或分治法等直观的算法相比,动态规划往往需要更抽象的思维和更系统的学习方法。在前两篇文章中,我们介绍了动态规划的基础概念、原理以及问题建模与状…...

两个电机由同一个控制器控制,其中一个电机发生堵转时,另一个电机的电流会变大,是发生了倒灌现象吗?电流倒灌产生的机理是什么?

当两个电机由同一个控制器驱动&#xff0c;且其中一个电机发生堵转时&#xff0c;另一个电机的电流确实可能异常增大&#xff0c;但这不一定是典型的“倒灌现象”&#xff0c;而更可能是由于共母线电压波动或能量回馈导致的。以下是具体分析&#xff1a; 1. 现象是否属于“电流…...

Java 方法向 Redis 里操作字符串有什么需要注意的?​

在 Java 开发中&#xff0c;Redis 作为高性能的键值存储数据库&#xff0c;常被用于缓存数据、处理高并发场景等。当我们使用 Java 方法向 Redis 中操作字符串类型数据时&#xff0c;有许多关键要点需要格外注意。这些要点不仅关系到代码的正确性和性能&#xff0c;还影响着整个…...

ECMAScript 2018(ES2018):异步编程与正则表达式的深度进化

1.版本背景与发布 发布时间&#xff1a;2018年6月&#xff0c;由ECMA International正式发布&#xff0c;标准编号为ECMA-262 9th Edition。历史意义&#xff1a;作为ES6之后的第三次年度更新&#xff0c;ES2018聚焦于异步编程、正则表达式和对象操作的标准化&#xff0c;推动…...

IntelliJ IDEA给Controller、Service、Mapper不同文件设置不同的文件头注释模板、Velocity模板引擎

通过在 IntelliJ IDEA 中的 “Includes” 部分添加多个文件头模板&#xff0c;并在 “Files” 模板中利用这些包含来实现不同类型文件的注释。以下是为 Controller、Service、Mapper 文件设置不同文件头的完整示例&#xff1a; 1. 设置 Includes 文件头模板 File > Settin…...

从零开始认识 Node.js:异步非阻塞的魅力

Node.js 是一个基于 Chrome V8 引擎 的 JavaScript 运行时环境&#xff0c;用于在服务器端运行 JavaScript 代码。它的设计目标是让开发者能够用 JavaScript 构建高性能、可扩展的网络应用。以下是关于 Node.js 的详细介绍&#xff1a; 1. 核心特点 事件驱动与非阻塞 I/O&…...

【C语言练习】046. 编写插入排序算法

046. 编写插入排序算法 046. 编写插入排序算法C语言实现插入排序代码说明示例运行输入:输出:插入排序的特点一、插入排序的适用场景二、C语言代码示例及分步讲解代码实现代码解析三、示例执行过程四、性能分析五、总结046. 编写插入排序算法 插入排序(Insertion Sort)是一…...

【论文阅读】BEVFormer

〇、Introduction BEVFormer是现在端到端无人驾驶中常使用的一个Backbone&#xff0c;用于将六个视角下的图像转换为鸟瞰图视角下的特征&#xff0c;转换出的BEV特征则会被用于后续模块的特征交互。然而在这个模型设计的初期&#xff0c;其最本质的意图是为了提取用于各种CV任…...

IDEA编辑器设置的导出导入

背景 最近新换了电脑&#xff0c;因为之前是 Intel 芯片的 Mac&#xff0c;这次换了 arm 架构的 M 芯片的 Mac&#xff0c;旧 Mac 上的很多软件不兼容&#xff0c;所以就没有选择换机数据迁移&#xff0c;一点一点下载、配置了所有环境。 导出 IDEA 支持设置的导入导出&…...

手动实现 Transformer 模型

本文使用 Pytorch 库手动实现了传统 Transformer 模型中的多头自注意力机制、残差连接和层归一化、前馈层、编码器、解码器等子模块&#xff0c;进而实现了对 Transformer 模型的构建。 """ Title: 解析 Transformer Time: 2025/5/10 Author: Michael Jie &quo…...

成功案例丨从草图到鞍座:用先进的发泡成型仿真技术变革鞍座制造

案例简介 在鞍座制造中&#xff0c;聚氨酯泡沫成型工艺是关键环节&#xff0c;传统依赖实验测试的方法耗时且成本高昂。为解决这一问题&#xff0c;意大利自行车鞍座制造商 Selle Royal与Altair合作&#xff0c;采用Altair Inspire PolyFoam软件进行发泡成型仿真。 该工具帮助团…...

BG开发者日志517:demo数据分析与修改方向

光明斗士玩法介绍预告片 1、试玩版开局不利 因为疏忽与经验不足&#xff0c;导致本地化出了问题&#xff0c;demo版本是以默认简体中文版的状态发布的&#xff0c; demo早就在2月就已经过审&#xff0c;当时客服并没有提出问题。后来多次传新版本&#xff0c;直接就发布了。 …...

Linux靶机网站配置:从零搭建Web靶场环境

在网络安全学习中&#xff0c;搭建靶机环境是进行渗透测试和防御技术研究的重要环节。本教程将详细介绍如何在Linux系统&#xff08;如Kali、Debian、Ubuntu等&#xff09;上配置一个基于Apache的靶机网站&#xff0c;支持HTTP/HTTPS、虚拟主机、SSL自签名证书、本地域名解析、…...

电机试验平台:创新科技推动电动机研究发展

电机试验平台是电机制造和研发过程中不可或缺的重要设备&#xff0c;其功能涵盖了电机性能测试、电机寿命测试、电机质量评估等多个方面。随着科技的不断发展和电机应用领域的日益扩大&#xff0c;对电机试验平台的要求也越来越高。本文将从现代化电机试验平台的设计与应用两个…...

STM32F103定时器1每毫秒中断一次

定时器溢出中断&#xff0c;在程序设计中经常用到。在使用TIM1和TIM8溢出中断时&#xff0c;需要注意“TIM_TimeBaseStructure.TIM_RepetitionCounter0;”&#xff0c;它表示溢出一次&#xff0c;并可以设置中断标志位。 TIM1_Interrupt_Initializtion(1000,72); //当arr1…...

【springcloud学习(dalston.sr1)】Zuul路由访问映射规则配置及使用(含源代码)(十二)

该系列项目整体介绍及源代码请参照前面写的一篇文章【springcloud学习(dalston.sr1)】项目整体介绍&#xff08;含源代码&#xff09;&#xff08;一&#xff09; springcloud学习&#xff08;dalston.sr1&#xff09;系统文章汇总如下&#xff1a; 【springcloud学习(dalston…...

Qt与Hid设备通信

什么是HID&#xff1f; HID&#xff08;Human Interface Device&#xff09;是‌直接与人交互的电子设备‌&#xff0c;通过标准化协议实现用户与计算机或其他设备的通信&#xff0c;典型代表包括键盘、鼠标、游戏手柄等。‌ 为什么HID要与qt进行通信&#xff1f; 我这里的应…...

2024 山东省ccpc省赛

目录 I&#xff08;签到&#xff09; 题目简述&#xff1a; 思路&#xff1a; 代码&#xff1a; A&#xff08;二分答案&#xff09; 题目简述&#xff1a; 思路&#xff1a; 代码&#xff1a; K&#xff08;构造&#xff09; 题目&#xff1a; 思路&#xff1a; 代…...

SAP HCM 0008数据存储逻辑

0008信息类型&#xff1a;0008信息类型是存储员工基本薪酬的地方&#xff0c;因为很多企业都会都薪酬带宽&#xff0c;都会按岗定薪&#xff0c;所以在上线前为体现工资体系的标准化&#xff0c;都会在配置对应的薪酬关系&#xff0c;HCM叫间接评估&#xff0c;今天我们就分析下…...

Elasticsearch 查询与过滤(Query vs. Filter)面试题

Elasticsearch 查询与过滤(Query vs. Filter)面试题 🚀 目录 基础概念性能优化实战应用错误排查高级场景设计题总结基础概念 🔍 面试题1:基础概念 题目: 请解释Elasticsearch中query和filter的主要区别,并说明何时应优先使用filter。 👉 查看参考答案 核心区别…...

golang读、写、复制、创建目录、删除、重命名,文件方法总结

文章目录 一、只读文件二、写入文件三、复制文件四、创建目录五、删除目录/文件五、重命名文件 一、只读文件 file, err : os.Open("./main.go")defer file.Close() //打开文件一定要关闭关闭文件if err ! nil {fmt.Println("文件打开失败", err)}/*方案一…...

如何使用通义灵码辅助学习C++编程 - AI编程助手提升效率

一、引言 C 是一门功能强大且灵活的编程语言&#xff0c;在软件开发、系统编程、游戏开发等领域广泛应用。然而&#xff0c;其复杂的语法和丰富的特性使得学习曲线较为陡峭。对于初学者而言&#xff0c;在学习过程中难免会遇到各种问题&#xff0c;如语法理解困难、代码调试耗…...

解决LeetCode 47. 全排列 II 问题的正确姿势:深入分析剪枝与状态跟踪

文章目录 问题描述常见错误代码与问题分析错误代码示例错误分析 正确解决方案修正后的代码关键修正点 核心逻辑详解1. 为何使用 boolean[] used 而非 HashSet&#xff1f;2. 剪枝条件 !used[i - 1] 的作用 场景对比&#xff1a;何时用数组&#xff1f;何时用哈希表&#xff1f;…...

ubuntu18 设置静态ip

百度 编辑/etc/netplan/01-netcfg.yaml 系统没有就自己编写 network: version: 2 renderer: networkd ethernets: eth0: dhcp4: no addresses: [192.168.20.8/24] # 设置你的IP地址和子网掩码 gateway4: 192.168.20.1 # 网关地址 namese…...

【Docker】CentOS 8.2 安装Docker教程

目录 1.卸载 2.安装依赖 3.设置yum源 4.安装Docker 5.启动Docker 6.设置Docker开机自启 7.验证Docker是否安装成功 8.配置多个国内镜像地址 9.重启Docker 10.Docker指令大全 10.1.启动与关闭Docker 10.2.Docker镜像操作 10.3.Docker容器操作 10.4.Docker Compose操作…...

K230 ISP:一种新的白平衡标定方法

第一次遇见需要利用光谱响应曲线进行白平衡标定的方法。很好奇是如何利用光谱响应曲线进行白平衡标定的。 参考资料参考&#xff1a;K230 ISP图像调优指南 K230 介绍 嘉楠科技 Kendryte 系列 AIoT 芯片中的最新一代 AIoT SoC K230 芯片采用全新的多核异构单元加速计算架构&a…...

桃芯ingchips——windows HID键盘例程无法同时连接两个,但是安卓手机可以的问题

目录 环境 现象 原理及解决办法 环境 PC&#xff1a;windows11 安卓&#xff1a;Android14 例程使用的是HID Keyboard&#xff0c;板子使用的是91870CQ的开发板&#xff0c;DB870CC1A 现象 连接安卓手机时并不会出现该现象&#xff0c;两个开发板都可以当做键盘给手机发按…...