HTML表单初探

表单的作用

收集用户提供的信息,提交给服务器

常见表单元素

<form> <input> <label> <button> <option> <select> <textarea>

构成一个表单的基本结构

<form action="">
  <input type="text">
  <input type="submit" value="">
</form>

<input>元素包含其他可用于创建表单元素,必须被 <form></form>包裹,放置在<form></form>外的表单元素输入的信息是无法被收集,从而不能提交给服务器

通过一个例子来展示HTML表单,剖析表单元素常见属性及值的正确使用

form表单
点击查看表单
查看代码

<form>元素

<form>:表示了文档中的一个区域,这个区域包含有交互控制元件(由其他表达元素构成 ),用来向web服务器提交信息。

常用属性:

action:当前数据提供给后端服务器的地址或是后端接口
methodpost get
post:HTTP post方法;表单数据会包含在表单体内然后发送给服务器.
get:HTTP get方法;表单数据会附加在 action 属性的URI中,并以 '?'作为分隔符, 然后这样得到的 URI 再发送给服务器.
(get与post提交数据的区别请看文末,实际情况下都是设置post)

<input>元素

常用属性

input.typetext password radio checkbox submit button
①. type="text" 输入单行字段

Snip20181221_3.png

 <label for="username">姓名 :</label>
 <input type="text" name="username" placeholder="请输入用户名">

②. type="password" 输入值被遮盖的单行文本字段,多用于密码

Snip20181221_4.png

<label for="password" >密码 :</label>
<input type="password" name="password">

③. type="radio" 单选按钮
同一组单选框按钮的name属性的值相同;且必须使用 value 属性定义此控件被提交时的值

<input type="radio" name="sex" value="male">男
<input type="radio" name="sex" value="female">女
Snip20181221_5.png

④. type="checkbox" 复选框
同一组复选按钮的name属性的值可以相同也可以不相同;但是必须使用 value 属性定义此控件被提交时的值

<input type="checkbox" name="hobby" value="game">游戏
<input type="checkbox" name="hobby" value="journey">旅游
<input type="checkbox" name="hobby" value="sport">运动
Snip20181221_6.png

⑤. type="submit" 提交表单的按钮
⑥. type="button" 按钮

type=submit<button>(button的类别type="button"也只是一个纯粹的按钮)可以提交数据,无论是<input>或是<button>其类型值为type=button不能提交数据(type=button只是提供一个纯粹的按钮)

Snip20181221_16.png

⑦. type="hidden" 不会显示在页面上,但它的值会被提交到服务器(点击提交在Network可以看到数据type="hidden"所隐藏的数据)。

<input type="hidden" name="csrf" value="345623fdsd">
<!-- 点击提交在Network可以看到name:"csrf" value:"345623fdsd"-->
Snip20181223_1.png
主要用途是:
  • 暂存信息,为服务器提供使用表单存储状态信息的方法。
    将在提交表单时使用相应属性定义的名称/值对传递回服务器
    跟踪提交编辑表单时需要更新的数据库记录。
  • 用于存储和提交安全秘钥对。提高网站的安全性,解决CSRF的一种现实方式

⑧. type="file"让用户选择文件上传。使用 accept 属性可以定义控件可以选择的文件类型。
( <input type="file" accept="image/jpeg">,会弹出一个文件选择窗口,accept的值指定文件的类型和格式,只有符合指定格式的文件才能选取。当然实际情况下不可能只指定一种格式的图片,多个格式可以使用逗号,连接accept="image/png, image/jpeg, image/gif, image/jpg",或者使用accept="image/*"方法只要是图片类型的都符合要求,但是无疑会增加浏览器的负担,不推荐使用)

Snip20181224_3.png

⑨. type="reset"将表单的内容清除的按钮。
<input type="reset" value="reset">重置
Snip20181224_6.png

常用属性input.placeholder

提示用户输入框的应该输入的内容。
<input id="username" type="text" name="username" placeholder="请输入用户名">

Snip20181224_9.png

常用属性input.disable

布尔属性表示此表单控件不可用,禁用的控件的值在提交表单时也不会被提交,被禁用。(type 属性为 hidden,此属性将被忽略
(不需要给disabled设置值)

常用属性input.checked

type属性的值为radio或者checkbox,则该布尔属性的存在与否表明了该控件是否是默认选择状态.
<input type="radio" name="sex" value="male" checked>

Snip20181224_10.png

(不要给checked赋值,赋值不会出错但是是画蛇添足,反而容易导致误解)


<label>元素为HTML表单的小部件提供标签

常用属性

for
标准写法:

<label for="password" >密码 :</label>
<input id="password" type="password" name="password">

简写方式:

<label>姓名 :
  <input type="text" name="username" placeholder="请输入用户名">
</label>

可标记的 form相关元素的id,给<input>一个关联,for的属性值等于想关元素id的值,在这个实例当点击姓名密码就可以进行用户名和密码的输入,不需要点击输入框

Snip20181221_19.png


<option> <select>元素

<select> 元素是一种表单控件,可创建选项菜单,菜单内的选项为<option>

<select>常用属性

name:控件名称(不能省略)

<option>常用属性元素

常用属性

<option>如果是<select>的后代,则selected不需要跟任何值,该项就是默认选择选择的一项(默认选择的只能一项)
<option value="oppo" selected>oppo</option>
value属性的内容,是实际提交给表单的值。如果省略了这个属性,值就从选项元素的文本内容中获取。(不能省略这个属性

selected这个布尔属性表明,这个选项初始被选中(默认选中)


<button>元素

常用属性

typesubmit name
submit: 此按钮将表单数据提交给服务器。<button>如果未指定属性,或者属性值为空或无效值,默认会升级为type="submit"
name:button的名称,与表单数据一起提交。
reset:此按钮重置所有组件为初始值。


<textarea>元素 表示一个多行纯文本编辑控件

Snip20181221_20.png

<textarea name="judgement" cols="6" rows="7"></textarea>

常用属性

name:元素的名称,必须填进去
cols:文本域的可视宽度,必须为正数
rows:元素的输入文本的行数(显示的高度)


注:表单元素有如有name属性的,不能省略。省略name属性
导致表单数据虽然提交,但是实际上很多数据并么有上传服务器,等于白写。

postget方式提交数据的区别

  • 表象不同,get把提交的数据url可以在地址栏,post不显示(在浏览器的Network会显示)
  • 原理不同,get是把信息拼接组成新的URL各个变量之间通过&连接,添加到action所指向的URL后面。表单数据会附加在 action 属性的URI中,并以'?' 作为分隔符,post 是放入http 请求体中
  • 提交数据量不同,get最多提交1k数据,如果拼接后的url信息特别长浏览器的限制,信息会被自动截断造成信息的不完整。post理论上无限制,受服务器限制
  • get提交的数据在浏览器历史记录中,安全性不好
  • 场景不同,get 重在 "要"向后台要数据, post 重在"给"侧重传送数据

版权声明:本文为博主原创文章,未经博主许可不得转载

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342