什么是表单呢?当前端想要提交数据给后端,怎么搞?那么在前端开发中,表单是常用的手段,比如常见的场景有:登录框、账号注册页、主机信息录入CMDB等等场景都是需要表单。那么在本篇中,笔者除了讲一些基本的知识点,还会再结合后端的方式来演示如何接收表单提交的数据。希望这些小小的演示可以起到抛砖引玉的效果。
构建表单,主要是通过from元素,我们先来一个最简单的小栗子,看下面代码:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>彩虹运维技术栈社区主页</title>
</head>
<body>
<h2>彩虹运维技术栈社区,公众号ID:TtrOpsStack</h2>
<h3>主机信息录入CMDB</h3>
<form>
<label for="hostname">主机名:</label><br>
<input type="text" id="hostname" name="hostname"><br>
<label for="ipaddr">IP地址:</label><br>
<input type="text" id="ipaddr" name="ipaddr"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
效果如下图:
通上面的小栗子可以知道,form表单的主要通途是用于收集用户的输入。在from表单里面,还包含着各种不同类型的input元素,比如我们上面小栗子中用到的文本(text)、提交按钮(submit)。
input元素是表单里最重要的元素,它有很多type属性,下面我们来总结下:
类型描述text文本输入radio单选按钮checkbox提交按钮submit提交按钮button可单击按钮
在上面小栗子中,除了input元素之外,不知道大家注意label元素没有。label元素的主要用途是为input元素定义标签,且用for属性和input元素的id属性进行绑定呢。
什么是单选按钮?就是在多个选项中,你只能选其中1个,不能多选。下面我们看个小栗子,看下面代码:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>彩虹运维技术栈社区主页</title>
</head>
<body>
<h2>彩虹运维技术栈社区,公众号ID:TtrOpsStack</h2>
<h3>问答题1(单选):某站长,工作经验不足1年,仅从互联网收集学习资料制定学习路线售卖盈利,从道德层面角度分析是否有问题?</h3>
<form>
<input type="radio" id="i1" name="problem" value="yes">
<label for="i1">有</label>
<input type="radio" id="i2" name="problem" value="no">
<label for="i2">没有</label>
<input type="radio" id="i3" name="problem" value="not_clear">
<label for="i3">不清楚</label>
</form>
<h3>问答题2(单选):实际工作经验不足1年的人员折腾的学习资料您觉得是否对你有帮助?</h3>
<form>
<input type="radio" id="w1" name="problem" value="yes">
<label for="w1">有</label>
<input type="radio" id="w2" name="problem" value="no">
<label for="w2">没有</label>
<input type="radio" id="w3" name="problem" value="not_clear">
<label for="w3">不清楚</label>
</form>
</body>
</html>
效果如下图:
上面的小栗子中,出了两道问答题,均为单选题。那么,类似的需求都是可以使用输入类型为radio来实现需要使用单选按钮的场景。
什么是复选框?复选框就是可以选择多个选项,当需要多选的时候,使用复选框输入类型就对了。看下面代码:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>彩虹运维技术栈社区主页</title>
</head>
<body>
<h2>彩虹运维技术栈社区,公众号ID:TtrOpsStack</h2>
<h3>问答题1(单选):某站长,工作经验不足1年,仅从互联网收集学习资料制定学习路线售卖盈利,从道德层面角度分析是否有问题?</h3>
<form>
<input type="checkbox" id="i1" name="problem" value="yes">
<label for="i1">有</label>
<input type="checkbox" id="i2" name="problem" value="no">
<label for="i2">没有</label>
<input type="checkbox" id="i3" name="problem" value="not_clear">
<label for="i3">不清楚</label><br>
<input type="submit" value="提交">
</form>
<h3>问答题2(单选):实际工作经验不足1年的人员折腾的学习资料您觉得是否对你有帮助?</h3>
<form>
<input type="checkbox" id="w1" name="problem" value="yes">
<label for="w1">有</label>
<input type="checkbox" id="w2" name="problem" value="no">
<label for="w2">没有</label>
<input type="checkbox" id="w3" name="problem" value="not_clear">
<label for="w3">不清楚</label><br>
<input type="submit" value="提交">
</form>
</body>
</html>
效果如下图:
上面的小栗子中,实现复选框的输入类型是checkbox,这个是重点哦!
当有数据要提交给后端的时候怎么搞?如果后端是API服务,可以给它提交json。如果是前端页面,就需要通过构建表单来获取用户的输入。基于表单提交数据给后端,怎么提交?需要一个可以点击的提交按钮,那这个按钮怎么来?先看下面代码:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>彩虹运维技术栈社区主页</title>
</head>
<body>
<h2>彩虹运维技术栈社区,公众号ID:TtrOpsStack</h2>
<h3>主机信息</h3>
<form>
<label for="ipaddr">IP地址</label>
<input type="text" id="ipaddr" name="ip"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
效果如下图:
输入类型为submit,说明它就是提交按钮,注意上面代码type="submit"了吗?
在之前的例子中,前端表单需要将数据提交给后端,除了需要一个提交按钮外,还需要action属性。当点击提交按钮后,表单的数据该发到后端的哪个url进行处理,就是定义在action属性中。接下来,我们结合前端和后端直接来个小实战,后端代码用Python的Flask框架。
前端代码:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>彩虹运维技术栈社区主页</title>
</head>
<body>
<h2>彩虹运维技术栈社区,公众号ID:TtrOpsStack</h2>
<h3>主机信息</h3>
<form action="http://192.168.11.10:8088/ttropsstack" target="_blank">
<label for="ipaddr">IP地址</label>
<input type="text" id="ipaddr" name="ip"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
后端代码:
from flask import Flask, request
webapp = Flask(__name__)
@webapp.route('/ttropsstack', methods=["GET", "POST"])
def ttropsstack():
args = request.args
print 'ip addr is: %s' % args.get('ip')
return 'ok'
if __name__ == '__main__':
webapp.run(host="0.0.0.0", port=8088, debug=True)
前端和后端的代码写完后,我们接下来看看效果
输入IP地址后,点击提交
这个ok是后端返回的
后端接收到数据后,啥也没做,只是做了简单打印
这个小栗子很简单,通过这个小栗子,是不是对action属性的用法有了进一步的理解呢?
method属性的用途是指定提交数据的http方法,通常有2个,get和post。接下来我们在上个小栗子的基础上做个小改造,看下面代码
前端代码:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>彩虹运维技术栈社区主页</title>
</head>
<body>
<h2>彩虹运维技术栈社区,公众号ID:TtrOpsStack</h2>
<h3>主机信息</h3>
<form action="http://192.168.11.10:8088/ttropsstack" target="_blank" method="get">
<label for="ipaddr">IP地址</label>
<input type="text" id="ipaddr" name="ip"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
后端代码:
from flask import Flask, request
webapp = Flask(__name__)
@webapp.route('/ttropsstack', methods=["POST"])
def ttropsstack():
args = request.args
print 'ip addr is: %s' % args.get('ip')
return 'ok'
if __name__ == '__main__':
webapp.run(host="0.0.0.0", port=8088, debug=True)
当前端输入数据后,提交表单时,直接告诉你这是不允许的方法
在这个例子中,是因为前端的表单了指定了method为get请求,而后端接收数据的method规定了需要post请求,故所以出现这个问题。
下面我们改造一下后端代码:
# coding: utf8
from flask import Flask, request
webapp = Flask(__name__)
@webapp.route('/ttropsstack', methods=['GET','POST'])
def ttropsstack():
if request.method == 'POST':
print request.get_data(as_text=True)
return 'ok'
else:
return '提交数据需要post请求'
if __name__ == '__main__':
webapp.run(host="0.0.0.0", port=8088, debug=True)
前端表单中的method还是保持get请求,再次提交,后端的返回如下:
看到了吗?后端判断前端过来的请求是get还是post,很显然,前端过来的请求是get,并且返回了非常友好的提示。
接下来我们继续改造一下前端的代码,将请求修改为post,代码如下:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>彩虹运维技术栈社区主页</title>
</head>
<body>
<h2>彩虹运维技术栈社区,公众号ID:TtrOpsStack</h2>
<h3>主机信息</h3>
<form action="http://192.168.11.10:8088/ttropsstack" target="_blank" method="post">
<label for="ipaddr">IP地址</label>
<input type="text" id="ipaddr" name="ip"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
后端代码也稍微改造一下,改变接收前端数据的方法
# coding: utf8
from flask import Flask, request
webapp = Flask(__name__)
@webapp.route('/ttropsstack', methods=['GET','POST'])
def ttropsstack():
if request.method == 'POST':
a = request.form
print a.get('ip')
print type(a)
return 'ok'
else:
return '提交数据需要post请求'
if __name__ == '__main__':
webapp.run(host="0.0.0.0", port=8088, debug=True)
输入IP地址,并点击提交
提交后,后端给前端返回了ok
接下来看下后端,后端啥也没做,就获取到表单的数据,然后打印了数据,并且打印了下数据类型
好了,关于前端的action属性和Method属性就讲到这里了。为了讲解action和method,还结合了后端的一丢丢知识,前端和后端的知识点以后都会慢慢讲到哈!
先来个前端代码:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>彩虹运维技术栈社区主页</title>
</head>
<body>
<h2>彩虹运维技术栈社区,公众号ID:TtrOpsStack</h2>
<form action="http://192.168.11.10:8088/ttropsstack" target="_blank" method="post">
<label for="opslist">运维开发应掌握的技能:</label>
<select id="opslist" name="opslist">
<option value="python">Python语言</option>
<option value="go">Go语言</option>
<option value="shell">Shell语言</option>
<option value="database">数据库</option>
<option value="frontend">前端</option>
<option value="linux">Linux</option>
<option value="network">网络</option>
<option value="storage">存储</option>
</select>
<input type="submit">
</form>
</body>
</html>
后端代码:
# coding: utf8
from flask import Flask, request
webapp = Flask(__name__)
@webapp.route('/ttropsstack', methods=['GET','POST'])
def ttropsstack():
if request.method == 'POST':
a = request.form
print a.get('opslist')
return 'ok'
else:
return '提交数据需要post请求'
if __name__ == '__main__':
webapp.run(host="0.0.0.0", port=8088, debug=True)
在下拉框中选择“Go语言”,并提交
后端啥也没干,就只做了打印
前端代码:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>彩虹运维技术栈社区主页</title>
</head>
<body>
<h2>彩虹运维技术栈社区,公众号ID:TtrOpsStack</h2>
<form action="http://192.168.11.10:8088/ttropsstack" target="_blank" method="post">
<label for="opslist">运维开发应掌握的技能:</label>
<select id="opslist" name="opslist" size="6" multiple>
<option value="python">Python语言</option>
<option value="go">Go语言</option>
<option value="shell">Shell语言</option>
<option value="database">数据库</option>
<option value="frontend">前端</option>
<option value="linux">Linux</option>
<option value="network">网络</option>
<option value="storage">存储</option>
</select>
<input type="submit">
</form>
</body>
</html>
上述前端代码中,是使用multiple属性来实现选择多个值。
后端代码的打印方式稍微做了些许调整:
# coding: utf8
from flask import Flask, request
webapp = Flask(__name__)
@webapp.route('/ttropsstack', methods=['GET','POST'])
def ttropsstack():
if request.method == 'POST':
data = request.get_data()
print data
return 'ok'
else:
return '提交数据需要post请求'
if __name__ == '__main__':
webapp.run(host="0.0.0.0", port=8088, debug=True)
按住ctrl或者shift键可进行多选
后端打印的效果图下图:
关于表单基础知识点的讲解就这么愉快的结束了,关于更多表单的元素、输入属性、输入类型可自行查阅和实战,笔者因时间有限就不一一演示。感谢您的阅读,望多多关注我们、点赞、转发!
本文转载于(喜欢的盆友关注我们):https://mp.weixin.qq.com/s/L-Msv39JrF7AzRx4K1OLjA
HTML中使用 <select> 和 <option> 元素创建选择框。而 <select> 元素对应的是 HTMLSelectElement 接口,<option> 元素对应的是 HTMLOptionElement 接口。这两个接口都是通过 HTMLElement 接口从其他 HTML 元素共享所有属性和方法。
先从 <select> 元素对应的 HTMLSelectElement 接口开始介绍专属的属性和方法。
下面介绍一下<select> 元素根据不同选中状态下的value属性的值:
<select name="location" id="selLocation">
<option value="Sunnyvale, CA">Sunnyvale</option>
<option value="Los Angeles, CA">Los Angeles</option>
<option value="Mountain View, CA">Mountain View</option>
<option value="">China</option>
<option>Australia</option>
</select>
当选中选项框中的第一项时,<select> 元素的 value 值为 "Sunnyvale, CA";而选中第四项时,<select> 元素的 value 值为 "",因为该项的 value 属性是空字符串;选中最后一项,则 value 值为 "Australia",因为该 <option> 元素没有指定 value 属性。
因此,根据以上的例子,<select> 元素的value属性根据以下规则获取值:
再介绍 <option> 元素对应的 HTMLOptionElement 接口专属属性和方法。
这里强调一下,<select> 元素的 change 事件与其它表单字段是不一样的。其它表单字段会在自己的值改变后触发 change 事件,然后字段失去焦点。而 <select> 会在选中一项时立即触发 change 事件。
对于只允许选择一项的 <select> 元素,获取选项最简单的方式是使用 <select> 元素的 selectIndex 属性,如下面的例子:
let selectedOption = selectbox.options[selectbox.selectedIndex];
获取到 <option> 元素后,就可以根据 <option> 元素的属性和方法获取想要的信息。
对于允许多选的 <select> 元素,selectedIndex 属性就像只允许选择一项一样。设置 selectedIndex 会移除所有选项,只选择指定的项,而获取 selectedIndex 只会返回选中的第一项的索引。
选项还可以通过取得选项的引用并将其 selected 属性设置为 true 来选中。例如,以下代码会选中 <select> 的第一项:
selectbox.options[0].selected = true;
与 selectedIndex 不同,设置选项的 selected 属性不会在多选时移除其他选项,从而可以动态选择任意多个选项。如果修改单选框中选项的 selected 属性,则其他选项会被移除。要注意的是,把 selected 属性设置为 false 对单选框没有影响。
通过 selected 属性可以确定选择框中哪个选项被选中。要取得所有选中项,需要循环选项集合逐一检测 selected 属性,比如:
function getSelectedOptions(selectbox){
let result = new Array();
for (let option of selectbox.options) {
if (option.selected) {
result.push(option);
}
}
return result;
}
可以使用 JavaScript 动态创建选项并将它们添加到选择框。首先,可以使用 DOM 方法,如下所示:
let newOption = document.createElement("option");
newOption.appendChild(document.createTextNode("Option text"));
newOption.setAttribute("value", "Option value");
selectbox.appendChild(newOption);
以上代码创建了一个新的<option>元素,使用文本节点添加文本,设置其 value 属性,然后将其添加到选择框。添加到选择框之后,新选项会立即显示出来。
浏览器原生提供 Option() 构造函数创建 HTMLOptionElement 实例:
new Option(text, value, defaultSelected, selected) : HTMLOptionElement
来看案例:
let newOption = new Option("Option Text", "Option Value", true);
创建之后,需要将该实例添加到 HTML 的 <select> 元素中,这里有两种添加方法:
这里详细介绍下 add() 方法:
add(element: HTMLOptionElement | HTMLOptGroupElement, before?: HTMLElement | number | null): void;
如果想要符合所有浏览器的规范,可以传入 undefined 作为第二个参数。
let newOption = new Option("Option text", "Option value", true);
selectbox.add(newOption, undefined);
这里注意一下 defaultSelected 和 selected 两个参数,有时候容易弄混。selected 属性为 true 时,该 <option> 当前状态处于已选择状态。defaultSelected 属性为 true 时,表示 <option> 在默认情况下为已选择状态,但不代表 <option> 的当前状态是已选择状态。当页面重置时,selected 属性值为 true 的 <option> 可能会变成未选择状态,而 defaultSelected 属性值为 true 的 <option> 则一定会变成已选择状态。
移除 <option> 元素的方法也不止一种,下面列举的方法都可以实现:
要清除选择框的所有选项,需要迭代所有选项并逐一移除它们,如下面例子所示:
function clearSelectbox(selectbox) {
for (let index = 0; index < selectbox.options.length;) {
selectbox.remove(0);
}
}
使用 DOM 操作中的 appendChild() 方法实现从一个 <select> 元素中将 <option> 移到另一个 <select> 元素中,这种实现方法会将 <option> 元素先从其父元素中移除,然后再插入指定位置。如下所示:
let selectbox1 = document.getElementById("selLocations1");
let selectbox2 = document.getElementById("selLocations2");
selecbox2.appendChild(selectbox1.options[0]);
移动选项和移除选项都会导致每个 <option> 的 index 属性重置。
重排 <option> 的话,使用 DOM 操作中的 insertBefore() 方法,而移到最后位置,还是使用 appendChild() 方法较为方便。
下面的代码演示了将一个 <option> 在 <select> 中前移一个位置:
let optToMove = selectbox.options[1];
selectbox.insertBefore(optToMove, selectbox.options[optionToMove.index-1]);
这个例子首先获得要移动 <option> 的索引,然后将其插入之前位于它前面的 <option> 之前,其中第二行代码适用于除第一个 <option> 之外的所有 <option>。下面的代码则可以将<option>向下移动一个位置:
let optionToMove = selectbox.options[1];
selectbox.insertBefore(optionToMove,
selectbox.options[optionToMove.index+2]);
<select> 和 <option> 是在 HTML 页面布局时,经常使用的表单控件,学会使用与之对应的 HTMLSelectElement 和 HTMLOptionElement 接口中的属性和方法会很容易的操控 <select> 和 <option> 元素。借助于 DOM 操作 <select> 和 <option> 也较为方便。
这里是云端源想IT,帮你轻松学IT”
嗨~ 今天的你过得还好吗?
世界微尘里
吾宁爱与憎
- 2024.03.18 -
在互联网的世界中,表单是用户与网站进行互动的重要桥梁。无论是注册新账号、提交反馈、还是在线购物,表单都扮演着至关重要的角色。在网页中,我们需要跟用户进行交互,收集用户资料,此时就需要用到表单标签。
HTML提供了一系列的表单标签,使得开发者能够轻松地创建出功能丰富的表单。今天我们就来深入探讨这些标签,了解它们的作用以及如何使用它们来构建一个有效的用户界面。
在HTML中,一个完整的表单通常由表单域、表单控件(表单元素)和提示信息三个部分构成。
表单域
表单控件
这些是用户与表单交云的各种元素,如<input>(用于创建不同类型的输入字段)、<textarea>(用于多行文本输入)、<button>(用于提交表单或执行其他操作)、<select>和<option>(用于创建下拉列表)等。
提示信息
这些信息通常通过<label>标签提供,它为表单控件提供了描述性文本,有助于提高可访问性。<label>标签通常与<input>标签一起使用,并且可以通过for属性与<input>标签的id属性关联起来。
这三个部分共同构成了一个完整的HTML表单,使得用户可以输入数据,并通过点击提交按钮将这些数据发送到Web服务器进行处理。
在表单域中可以定义各种表单元素,这些表单元素就是允许用户在表单中输入或者选择的内容控件。下面就来介绍HTML中常用的表单元素。
1、<form>标签:基础容器
作用:定义一个表单区域,用户可以在其中输入数据进行提交。
<form action="submit.php" method="post">
其中action属性指定了数据提交到的服务器端脚本地址,method属性定义了数据提交的方式(通常为GET或POST)。
2、<input>标签:数据输入
<input>标签是一个单标签,用于收集用户信息。允许用户输入文本、数字、密码等。
<input type="text" name="username" placeholder="请输入用户名">
type属性决定了输入类型,name属性定义了数据的键名,placeholder属性提供了输入框内的提示文本。
<input>标签的属性
下面举个例子来说明:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form>
用户名:<input type="text" value="请输入用户名"><br>
密码:<input type="password"><br>
性别:男<input type="radio" name="sex" checked="checked"> 女<input type="radio" name="sex"><br>
爱好:吃饭<input type="checkbox"> 睡觉<input type="checkbox"> 打豆豆<input type="checkbox"><br>
<input type="submit" value="免费注册">
<input type="reset" value="重新填写">
<input type="button" value="获取短信验证码"><br>
上传头像:<input type="file">
</form>
</body>
</html>
3、<label>标签:关联说明
它与输入字段如文本框、单选按钮、复选框等关联起来,以改善网页的可用性和可访问性。<label>标签有两种常见的用法:
1)包裹方式:
在这种用法中,<label>标签直接包裹住关联的表单元素。例如:
<label>用户名:<input type="text" name="username"></label>
这样做的好处是用户点击标签文本时,关联的输入字段会自动获取焦点,从而提供更好的用户体验。
2)使用for属性关联:
在这种用法中,<label>标签通过for属性与目标表单元素建立关联,for属性的值应与目标元素的id属性相匹配。例如:
<label for="username">用户名:</label><input type="text" id="username" name="username">
这样做的优势是单击标签时,相关的表单元素会自动选中(获取焦点),从而提高可用性和可访问性。
4、<select>和<option>标签:下拉选择
在页面中,如果有多个选项让用户选择,并且想要节约页面空间时,我们可以使用标签控件定义下拉列表。
注意点:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form>
籍贯:
<select>
<option>山东</option>
<option>北京</option>
<option>西安</option>
<option selected="selected">火星</option>
</select>
</form>
</body>
</html>
5、<textarea>标签:多行文本输入
当用户输入内容较多的情况下,我们可以用表单元素标签替代文本框标签。
<textarea name="message" rows="5" cols="30">默认文本</textarea>
rows和cols属性分别定义了文本区域的行数和列数。
代码示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form>
今日反馈:
<textarea>请在此输入内容</textarea>
</form>
</body>
</html>
6、<button>标签:按钮控件
创建一个可点击的按钮,通常用于提交或重置表单。它允许用户放置文本或其他内联元素(如<i>、<b>、<strong>、<br>、<img>等),这使得它比普通的<input type="button">具有更丰富的内容和更强的功能。
<button type="submit">提交</button>
type属性为submit时表示这是一个提交按钮。
7、<fieldset>和<legend>标签:分组和标题
通常用于在HTML表单中对相关元素进行分组,并提供一个标题来描述这个组的内容。
<fieldset>标签:该标签用于在表单中创建一组相关的表单控件。它可以将表单元素逻辑分组,并且通常在视觉上通过围绕这些元素绘制一个边框来区分不同的组。这种分组有助于提高表单的可读性和易用性。
<legend>标签:它总是与<fieldset>标签一起使用。<legend>标签定义了<fieldset>元素的标题,这个标题通常会出现在浏览器渲染的字段集的边框上方。<legend>标签使得用户更容易理解每个分组的目的和内容。
代码示例:
<form>
<fieldset>
<legend>个人信息</legend>
<label for="name">姓名:</label>
<input type="text" id="name" name="name"><br><br>
<label for="email">邮箱:</label>
<input type="email" id="email" name="email"><br><br>
</fieldset>
<fieldset>
<legend>兴趣爱好</legend>
<input type="checkbox" id="hobby1" name="hobby1" value="music">
<label for="hobby1">音乐</label><br>
<input type="checkbox" id="hobby2" name="hobby2" value="sports">
<label for="hobby2">运动</label><br>
<input type="checkbox" id="hobby3" name="hobby3" value="reading">
<label for="hobby3">阅读</label><br>
</fieldset>
<input type="submit" value="提交">
</form>
在这个示例中,我们使用了两个<fieldset>元素来组织表单的不同部分。第一个<fieldset>包含姓名和邮箱字段,而第二个<fieldset>包含三个复选框,用于选择用户的兴趣爱好。每个<fieldset>都有一个<legend>元素,用于提供标题。这样,用户在填写表单时可以更清晰地了解每个部分的内容。
想要快速入门前端开发吗?推荐一个前端开发基础课程,这个老师讲的特别好,零基础学习无压力,知识点结合代码,边学边练,可以免费试看试学,还有各种辅助工具和资料,非常适合新手!点这里前往学习哦!云端源想
8、<datalist>标签:预定义选项列表
<datalist>标签是HTML5中引入的一个新元素,它允许开发者为输入字段提供预定义的选项列表。当用户在输入字段中输入时,浏览器会显示一个下拉菜单,其中包含与用户输入匹配的预定义选项。
使用<datalist>标签可以提供更好的用户体验,因为它可以帮助用户选择正确的选项,而不必手动输入整个选项。此外,<datalist>还可以与<input>元素的list属性结合使用,以将预定义的选项列表与特定的输入字段关联起来。
下面是一个使用<datalist>标签的代码示例:
<form>
<label for="color">选择你喜欢的颜色:</label>
<input type="text" id="color" name="color" list="colorOptions">
<datalist id="colorOptions">
<option value="红色">
<option value="蓝色">
<option value="绿色">
<option value="黄色">
<option value="紫色">
</datalist>
<input type="submit" value="提交">
</form>
9、<output>标签:计算结果输出
<output>标签是HTML5中引入的一个新元素,它用于显示计算结果或输出。该标签通常与JavaScript代码结合使用,通过将计算结果赋值给<output>元素的value属性来显示结果。
<output>标签可以用于各种类型的计算和输出,例如数学运算、字符串处理、数组操作等。它可以与<input>元素一起使用,以实时更新计算结果。
下面是一个使用<output>标签的示例:
<form>
<label for="num1">数字1:</label>
<input type="number" id="num1" name="num1" oninput="calculate()"><br><br>
<label for="num2">数字2:</label>
<input type="number" id="num2" name="num2" oninput="calculate()"><br><br>
<label for="result">结果:</label>
<output id="result"></output>
</form>
<script>
function calculate() {
var num1 = parseInt(document.getElementById("num1").value);
var num2 = parseInt(document.getElementById("num2").value);
var result = num1 + num2;
document.getElementById("result").value = result;
}
</script>
10、<progress>标签:任务进度展示
<progress>标签是HTML5中用于表示任务完成进度的一个新元素。它通过value属性和max属性来表示进度,其中value表示当前完成的值,而max定义任务的总量或最大值。
示例:
<!DOCTYPE html>
<html>
<head>
<title>Progress Example</title>
</head>
<body>
<h1>File Download</h1>
<progress id="fileDownload" value="0" max="100"></progress>
<br>
<button onclick="startDownload()">Start Download</button>
<script>
function startDownload() {
var progress = document.getElementById("fileDownload");
for (var i = 0; i <= 100; i++) {
setTimeout(function() {
progress.value = i;
}, i * 10);
}
}
</script>
</body>
</html>
在上面的示例中,我们创建了一个名为"fileDownload"的<progress>元素,并设置了初始值为0,最大值为100。我们还添加了一个按钮,当用户点击该按钮时,会触发名为"startDownload"的JavaScript函数。这个函数模拟了一个文件下载过程,通过循环逐步增加<progress>元素的value属性值,从而显示下载进度。
11、<meter>标签:度量衡指示器
<meter>标签在HTML中用于表示度量衡指示器,它定义了一个已知范围内的标量测量值或分数值,通常用于显示磁盘使用情况、查询结果的相关性等。例如:
<p>CPU 使用率: <meter value="0.6" min="0" max="1"></meter> 60%</p>
<p>内存使用率: <meter value="0.4" min="0" max="1"></meter> 40%</p>
在这个示例中,我们使用了两个<meter>标签来分别显示CPU和内存的使用率。value属性表示当前的测量值,min和max属性分别定义了测量范围的最小值和最大值。通过这些属性,<meter>标签能够清晰地显示出资源的使用情况。
需要注意的是,<meter>标签不应该用来表示进度条,对于进度条的表示,应该使用<progress>标签。
12、<details>和<summary>标签:详细信息展示
<details>和<summary>标签是HTML5中新增的两个元素,用于创建可折叠的详细信息区域。
<details>标签定义了一个可以展开或折叠的容器,其中包含一些额外的信息。它通常与<summary>标签一起使用,<summary>标签定义了<details>元素的标题,当用户点击该标题时,<details>元素的内容会展开或折叠。
示例:
<details>
<summary>点击查看详细信息</summary>
<p>这里是一些额外的信息,用户可以点击标题来展开或折叠这些信息。</p>
</details>
在这个示例中,我们使用了<details>标签来创建一个可折叠的容器,并在其中添加了一个<summary>标签作为标题。当用户点击这个标题时,容器的内容会展开或折叠。
总结:
HTML表单标签是构建动态网页的基石,它们使得用户能够与网站进行有效的交互。
通过合理地使用这些标签,开发者可以创建出既美观又功能强大的表单,从而提升用户体验和网站的可用性。所以说,掌握这些标签的使用,对于前端开发者来说是至关重要的。
我们下期再见!
END
文案编辑|云端学长
文案配图|云端学长
内容由:云端源想分享
*请认真填写需求信息,我们会在24小时内与您取得联系。