1.form表單有什么作用?有哪些常用的input 標(biāo)簽,分別有什么作用?
HTML 表單用于接收不同類型的用戶輸入,用戶提交表單時(shí)向服務(wù)器傳輸數(shù)據(jù),從而實(shí)現(xiàn)用戶與Web服務(wù)器的交互。
HTML表單是一個(gè)包含表單元素的區(qū)域, 表單使用<form> 標(biāo)簽創(chuàng)建。表單能夠包含 input 元素,比如文本字段、復(fù)選框、單選框、提交按鈕等等。表單還可以包含menus、textarea、fieldset、legend 和 label 元素。
表單屬性
name:表單的名稱。
action:規(guī)定當(dāng)提交表單時(shí),向何處發(fā)送表單數(shù)據(jù)。action取值為:
第一,一個(gè)URL(絕對URL/相對URL),一般指向服務(wù)器端一個(gè)程序,程序接收到表單提交過來的數(shù)據(jù)(即表單元素值)作相應(yīng)處理。
比如<form action="http://www.cnblogs.com/reg.ashx">,當(dāng)用戶提交這個(gè)表單時(shí),服務(wù)器將執(zhí)行網(wǎng)址"http:/ /www.cnblogs.com/"上的名為“reg.ashx”的一般處理程序。
第二,使用mailto協(xié)議的URL地址,這樣會將表單內(nèi)容以電子郵件的形式發(fā)送出去。這種情況比較少見的,因?yàn)樗笤L問者的計(jì)算機(jī)上安裝和正確設(shè)置好了郵件發(fā)送程序。
第三,空值,如果action為空或不寫,表示提交給當(dāng)前頁面。
method:該屬性定義瀏覽器將表單中的數(shù)據(jù)提交給服務(wù)器處理程序的方式。關(guān)于method的取值,最常用的是get和post。
第一,使用get方式提交表單數(shù)據(jù),Web瀏覽器會將各表單字段元素及其數(shù)據(jù)按照URL參數(shù)格式附在<form>標(biāo)簽的action屬性所指定的URL地址后面發(fā)送給Web服務(wù)器;由于URL的長度限制,使用get方式傳送的數(shù)據(jù)量一般限制在1KB以下。
第二,使用post方式,瀏覽器會將表單數(shù)據(jù)作為HTTP請求體的一部分發(fā)送給服務(wù)器。一般來說,使用post方式傳送的數(shù)據(jù)量要比get方式傳遞的數(shù)據(jù)量大;根據(jù)HTML標(biāo)準(zhǔn),如果處理表單的服務(wù)器程序不會改變服務(wù)器上存儲的數(shù)據(jù),則應(yīng)采用get方式(比如查詢),如果表單處理的結(jié)果會引起服務(wù)器上存儲的數(shù)據(jù)的變化,則應(yīng)該采用post方式(比如增刪改操作)。
target:該屬性規(guī)定在何處顯示action屬性中指定的URL所返回的結(jié)果。取值有:
_blank(在新窗口中打開)
_self(在相同的框架中打開,默認(rèn)值)
_parent(在父框架中打開)
_top(在整個(gè)窗口中打開)
framename(在指定的框架中打開)
title:設(shè)置網(wǎng)站訪問者的鼠標(biāo)放在表單上的任意位置停留時(shí),瀏覽器用小浮標(biāo)顯示的文本。
enctype:規(guī)定在發(fā)送到服務(wù)器之前應(yīng)該如何對表單數(shù)據(jù)進(jìn)行編碼。
取值:
默認(rèn)值為 "application/x-www-form-urlencoded",在發(fā)送到服務(wù)器之前,所有字符都會進(jìn)行編碼(空格轉(zhuǎn)換為 "+" 加號,特殊符號轉(zhuǎn)換為 ASCII HEX 值);
“multipart/form-data”:不對字符編碼。在使用包含文件上傳控件的表單時(shí),必須使用該值。
input標(biāo)簽常用的有:
1)單行文本框<input type="text"/>
(input 的type 屬性的默認(rèn)值就是"text")用例:<input type = “text” name=“名稱”/>
以下是單行文本框的主要屬性:
size:指定文本框的寬度,以字符個(gè)數(shù)為單位;在大多數(shù)瀏覽器中,文本框的缺省寬度是20個(gè)字符。
value:指定文本框的默認(rèn)值,是在瀏覽器第一次顯示表單或者用戶單擊<input type="reset"/>按鈕之后在文本框中顯示的值。
maxlength:指定用戶輸入的最大字符長度。
readonly:只讀屬性,當(dāng)設(shè)置readonly屬性后,文本框可以獲得焦點(diǎn),但用戶不能改變文本框中的value。
disabled:禁用,當(dāng)文本框被禁用時(shí),不能獲得焦點(diǎn),當(dāng)然,用戶也不能改變文本框的值。并且在提交表單時(shí),瀏覽器不會將該文本框的值發(fā)送給服務(wù)器。
2)密碼框<input type="password"/>
用例:<input type=“password” name=“名稱”/>
密碼字段中的字符會被掩碼(顯示為星號或原點(diǎn))。
3)單選按鈕<input type="radio"/>
使用方式:使用name相同的一組單選按鈕,不同radio設(shè)定不同的value值,這樣通過取指定name的值就可以知道誰被選中了,不用單獨(dú)的判斷。單選按鈕的元素值由value屬性顯式設(shè)置,表單提交時(shí),選中項(xiàng)的value和name被打包發(fā)送,不顯式設(shè)置value。
用例:
<input type=“radio” name=“gender” value=“male”/>
<input type=“radio” name=“gender” value=“female”/>
4)復(fù)選框<input type="checkbox"/>
使用復(fù)選按鈕組,即name相同的一組復(fù)選按鈕,復(fù)選按鈕表單元素的元素值由value屬性顯式設(shè)置,表達(dá)提交時(shí),所有選中項(xiàng)的value和name被打包發(fā)送
不顯式設(shè)置value。復(fù)選框的checked屬性表示是否被默認(rèn)選中,
<input type="checkbox" checked />或者
<input type="checkbox" checked="checked" />(推薦)
checked、readonly等這種一個(gè)可選值的屬性都可以省略屬性值。
用例:
<input type =“checkbox” name=“l(fā)anguage” value=“java”/>
<input type =“checkbox” name=“l(fā)anguage” value=“c”/>
<input type =“checkbox” name=“l(fā)anguage” value=“JavaScript”/>
5)隱藏域<input type="hidden"/>
隱藏域通常用于向服務(wù)器提交不需要顯示給用戶的信息。
<input type=“hidden” name=“隱藏域”/>
6)提交按鈕<input type="submit"/>
當(dāng)用戶單擊<inputt type="submit"/>的提交按鈕時(shí),表單數(shù)據(jù)會提交給<form>標(biāo)簽的action屬性所指定的服務(wù)器處理程序。中文IE下默認(rèn)按鈕文本為“提交查詢”,可以設(shè)置value屬性修改按鈕的顯示文本。
用例:<input type="submit" value="提交"/>
7)重置按鈕<input type="reset"/>
當(dāng)用戶單擊<input type="reset"/>按鈕時(shí),表單中的值被重置為初始值。在用戶提交表單時(shí),重置按鈕的name和value不會提交給服務(wù)器。
用例:<input type=“reset” value=“重置按鈕"/>
8)普通按鈕<input type="button"/>
普通按鈕通常用于單擊執(zhí)行一段腳本代碼。
用例:<input type="button" value="普通按鈕"/>
8)圖像按鈕<input type="image"/>
圖像按鈕的src屬性指定圖像源文件,它沒有value屬性。圖像按鈕可代替<input type="submit"/>,而現(xiàn)在也可以通過css直接將<input type="submit"/>按鈕的外觀設(shè)置為一幅圖片。
用例:<input type="image" src="bg.jpg" />
9)文件上傳<input type="file"/>
使用file,則form的enctype必須設(shè)置為multipart/form-data,method屬性為POST。
用例:
<input name="uploadedFile" id="uploadedFile" type="file" size="60" accept="text/*"/>

10)其它標(biāo)簽
多行文本<textarea></textarea>
多行文本<textarea>創(chuàng)建一個(gè)可輸入多行文本的文本框,<textarea>沒有value屬性,<textarea>文本</textarea>,cols=“50”、rows=“15”屬性表示行數(shù)和列數(shù),不指定則瀏覽器采取默認(rèn)顯示。
用例:
1 <textarea name=“textareaContent” rows=“ 10“ cols=“40” >
2 多行文本框的初始顯示內(nèi)容
3 </textarea>

下拉選擇框
下拉選擇框允許你在一個(gè)有限的空間設(shè)置多種選項(xiàng)。
代碼格式:
<select name="..." size="..." multiple>
<o(jì)ption value="..." selected>...</option>
...
</select>
屬性解釋:
size屬性定義下拉選擇框的行數(shù);
name屬性定義下拉選擇框的名稱;
multiple屬性表示可以多選,如果不設(shè)置本屬性,那么只能單選;
value屬性定義選擇項(xiàng)的值;
selected屬性表示默認(rèn)已經(jīng)選擇本選項(xiàng)。
<select name="mySelt" size="1" >
<o(jì)ption value="1" selected>baidu.com</option>
<o(jì)ption value="2">sina.com</option>
<o(jì)ption value="3">sohu.com</option>
</select>

<label></label>標(biāo)簽
label 元素不會向用戶呈現(xiàn)任何特殊效果。不過,它為鼠標(biāo)用戶改進(jìn)了可用性。如果您在 label 元素內(nèi)點(diǎn)擊文本,就會觸發(fā)此控件。就是說,當(dāng)用戶選擇該標(biāo)簽時(shí),瀏覽器就會自動(dòng)將焦點(diǎn)轉(zhuǎn)到和標(biāo)簽相關(guān)的表單控件上。
<label> 標(biāo)簽的 for 屬性應(yīng)當(dāng)與相關(guān)元素的 id 屬性相同。
<label></label>標(biāo)簽對<input type="radio"/>和<input type="checkbox"/>這兩個(gè)標(biāo)簽是非常有用的。
<input type="radio" name="sex" id="male" value="0" checked="checked" />
<label for="male">男</lable>
<input type="radio" name="sex" id="fmale" value="1" />
<label for="fmale">女</label>
<input type="radio" name="sex" id="secret" value="2" />
<label for="secret">保密</label>
2.post 和 get 方式的區(qū)別?
FORM中的get post方法區(qū)別Form中的get和post方法,在數(shù)據(jù)傳輸過程中分別對應(yīng)了HTTP協(xié)議中的GET和POST方法。二者主要區(qū)別如下:
1)Get是用來從服務(wù)器上獲得數(shù)據(jù),而Post是用來向服務(wù)器上傳遞數(shù)據(jù)。
2) Get將表單中數(shù)據(jù)的按照variable=value的形式,添加到action所指向的URL后面,并且兩者使用“?”連接,而各個(gè)變量之間使用 “&”連接;Post是將表單中的數(shù)據(jù)放在form的數(shù)據(jù)體中,按照變量和值相對應(yīng)的方式,傳遞到action所指向URL。
3) Get是不安全的,因?yàn)樵趥鬏斶^程,數(shù)據(jù)被放在請求的URL中,而如今現(xiàn)有的很多服務(wù)器、代理服務(wù)器或者用戶代理都會將請求URL記錄到日志文件中,然后 放在某個(gè)地方,這樣就可能會有一些隱私的信息被第三方看到。另外,用戶也可以在瀏覽器上直接看到提交的數(shù)據(jù),一些系統(tǒng)內(nèi)部消息將會一同顯示在用戶面前。 Post的所有操作對用戶來說都是不可見的。
4)Get傳輸?shù)臄?shù)據(jù)量小,這主要是因?yàn)槭躑RL長度限制;而Post可以傳輸大量的數(shù)據(jù),所以在上傳文件只能使用Post(當(dāng)然還有一個(gè)原因,將在后面的提到)。
5)Get限制Form表單的數(shù)據(jù)集的值必須為ASCII字符;而Post支持整個(gè)ISO10646字符集。
6)Get是Form的默認(rèn)方法。
3.在input里,name 有什么作用?
name 定義input的名稱屬性,作為可與服務(wù)器交互數(shù)據(jù)的input元素的服務(wù)器端的標(biāo)示。
注意和id屬性的區(qū)別:name屬性是和服務(wù)器通信時(shí)使用的名稱;而id屬性是瀏覽器端使用的名稱,該屬性主要是為了方便客戶端編程,而在css和JavaScript中使用的。
4.radio 如何 分組?
使用name相同的一組單選按鈕,不同radio設(shè)定不同的value值,這樣通過取指定name的值就可以知道誰被選中了,不用單獨(dú)的判斷。
5.placeholder 屬性有什么作用?
HTML5新增的另一個(gè)屬性,當(dāng)input或者textarea設(shè)置了該屬性后,該值的內(nèi)容將作為灰字提示顯示在文本框中,當(dāng)文本框獲得焦點(diǎn)時(shí),提示文字消失。
例:<inputid="t1"type="text"placeholder="請輸入文字"/>

6.type=hidden隱藏域有什么作用? 舉例說明
隱藏域在頁面中對于用戶是不可見的。它有兩個(gè)作用:
1)暫存信息,(用戶看不到),便于設(shè)計(jì)者隨時(shí)調(diào)用程序。
2)用于安全性校驗(yàn),例如通過設(shè)置hidden隱藏域,服務(wù)器可以驗(yàn)證用戶權(quán) 限,避免偽造的假網(wǎng)站提交數(shù)據(jù)。