form表单有什么作用?有哪些常用的input 标签,分别有什么作用?
表单的作用是搜集用户的输入,用户提交表单时向服务器传输数据,从而实现用户与web服务器的交互。
input标签根据type属性不同,分以下常用标签:
- button——定义可点击的按钮
- checkbox——定义复选框
- radio——定义单选按钮
- text——定义单行输入框,可在其中输入文本
- file——定义输入字段和“浏览”按钮,供文件上传
- hidden——定义隐藏的输入字段
- image——定义图像形式的提交按钮
- password——定义密码字段,该字段中的字符被掩码
- reset——定义重置按钮,用于清除表单中的所有数据
- submit——定义提交按钮,把表单数据发给服务器
post 和 get 方式的区别?
post和get是使用http协议在客户端和服务器之间进行请求-响应时,两种最常用到的方法。get是从服务器上获取数据,post是向服务器传送数据。
get方式:
get常用于向指定的资源请求数据。使用get时,请求时发送的表单数据会显示在url上,多个参数也会使用&连接。
虽然http协议没有对传输数据大小的限制,也没有对url长度的限制,但实际开发中特定的浏览器和服务器对于url的长度是有限制的,这就导致使用get方法时,传输数据会受到url限制。
同时由于数据明文传输,使得GET所提交数据的安全性无法得到保障,当页面被收藏为书签,或被浏览器缓存,或者其他人查看浏览器记录时,就很容易看到所提交的数据。
但get对服务器上被get的指定数据来说是安全的,一份数据不管被get请求多少次,都只是在对这份数据进行查询操作,这份数据本身是不会改变的。
post方式:
post常用于向指定的资源提交要被处理的数据,这对被指定资源来说是不安全的,因为post方法会更新指定资源的数据。
post提交的数据是放置在http消息主体中的,url不会因为post请求发生改变,这样所传输数据的大小理论上就不受限制了,但在实际应用中还是会受到各个web服务器配置的限制,但对比get方法来说,post已是传输大量数据的更佳选择。
由于post传输的数据都放在http包中,所以post对于所传输的数据更安全,url中不会显示数据内容,页面也无法被浏览器缓存或收藏,也不会从浏览器历史记录中暴露数据内容。但如果在post传输数据中选择“后退”操作,会导致表单数据可能重复提交。
综上可以看出,在搜索引擎中检索信息时,应使用get方法,而在注册、登录、提交用户信息等场景中,应使用post方法。
在input里,name 有什么作用?
- 规定input元素的名称,用于对提交到服务器后的表单数据进行标识;
- 在客户端提供给 JavaScript,使其可以引用表单数据;
- 用于单选/多选分组,相同name为一组。
- 只有设置了 name 属性的表单元素才能在提交表单时传递它们的值。
radio 如何 分组?
具有相同 name 属性值的 radio 为同一组,例如:
<label>性别:</label>
<input type="radio" name="sex" value="man" checked>男
<input type="radio" name="sex" value="woman">女
<label>取向:</label>
<input type="radio" name="orientation" value="man">男
<input type="radio" name="orientation" value="woman" checked>女
placeholder属性有什么作用?
提供可描述输入字段预期值的提示信息,该提示会在输入字段为空时显示,并会在字段获得焦点时消失。
type=hidden隐藏域有什么作用? 举例说明
基本语法:
<input type="hidden" name="file-name" value="value">
作用
隐藏域在页面中对于用户是不可见的,在表单中插入隐藏域的目的在于收集或发送信息,以利于被处理表单的程序所使用。浏览者单击发送按钮发送表单的时候,隐藏域的信息也被一起发送到服务器。
有些时候我们要给用户一信息,让他在提交表单时提交上来以确定用户身份,如sessionkey等。当然这些东西也能用cookie实现,但使用隐藏域就简单的多了.而且不会有浏览器不支持,用户禁用cookie的烦恼。
有些时候一个form里有多个提交按钮,怎样使程序能够分清楚到底用户是按那一个按钮提交上来的呢?我们就可以写一个隐藏域,然后在每一个按钮处加上onclick=”document.form.command.value=”xx””然后我们接到数据后先检查command的值就会知道用户是按的那个按钮提交上来的。
有时候一个网页中有多个form,我们知道多个form是不能同时提交的,但有时这些form确实相互作用,我们就可以在form中添加隐藏域来使它们联系起来。
JavaScript不支持全局变量,但有时我们必须用全局变量,我们就可以把值先存在隐藏域里,它的值就不会丢失了。
还有个例子,比如按一个按钮弹出四个小窗口,当点击其中的一个小窗口时其他三个自动关闭.可是IE不支持小窗口相互调用,所以只有在父窗口写个隐藏域,当小窗口看到那个隐藏域的值是close时就自己关掉。
被忽略的enctype
当 method
属性值为 post 时
, enctype 是提交form给服务器的内容的 MIME 类型 。可能的取值有:
-
application/x-www-form-urlencoded
: 如果属性未指定时的默认值(key=value)。 -
multipart/form-data
: 这个值用于一个type
属性设置为 "file" 的<input>
元素。(可用来接收file数据) text/plain (HTML5)