HTML寒假學(xué)習(xí)總結(jié)(三)表單

表單

1、表單就是讓用戶提交數(shù)據(jù)到服務(wù)器的。用在收集用戶數(shù)據(jù)的場景。
2、表單的標(biāo)簽是form。最重要的兩個屬性,action和method。
3、Action是一個url,用戶提交的數(shù)據(jù)由哪個頁面/服務(wù)器處理。
4、Method 是表示是用get方式提交還是post方式提交。
5、表單里面可以設(shè)計一些表單項或者一些控件。

Get和Post

1、認(rèn)為get是一個比較安全的操作,是從服務(wù)器拿數(shù)據(jù),每次操作返回的數(shù)據(jù)是一樣的。Get請求在瀏覽器、運營商,會在中間緩存。在HTTP協(xié)議中,URL對get請求的處理是,把請求放到路徑中一次性把數(shù)據(jù)發(fā)到服務(wù)器。
2、Post是向服務(wù)器提交數(shù)據(jù),每次提交不一樣,會修改服務(wù)器數(shù)據(jù),不安全。瀏覽器不會緩存任何post數(shù)據(jù)。POST的內(nèi)容先被編碼,再放到url的body里面,再去提交。【head和Body是分兩次發(fā)送的】
3、關(guān)于明文/密文的解釋: 一個是在URL里面,一個在HTTP的body里面。【其實編碼的方式是一樣的,只是能不能在url中看到而已】

URL編碼

URL編碼:轉(zhuǎn)義的方式比較特別,把少數(shù)的特殊字符進(jìn)行替換。
假如用戶名有空格,如果是GET,在URL中會被轉(zhuǎn)義。(不過現(xiàn)在新的方式好像是把空格替換為了+加號)【在服務(wù)器端處理的時候,復(fù)原用戶的輸入,可能需要處理加號或者是這種特殊的URL編碼】
那么需要根據(jù)服務(wù)器使用的語言不同來做相應(yīng)的處理,比如JS里面用decodeURIComponent來處理。

HTTP Method

1、GET
2、POST
3、HEAD
4、PUT
5、DELETE
6、OPTIONS

HEAD:Head方法不會有body返回。
DELETE:刪除
OPTIONS:options也不會有具體的body返回?!緊ptions的使用場景:假設(shè)有個跨域請求,服務(wù)器發(fā)送options來詢問這個請求是否可以跨越】

單行文本框

1、標(biāo)簽:input
2、使用:name 很重要,是向服務(wù)器發(fā)送的。在html中寫一個value,代表的是默認(rèn)值。

屬性1:placeholder,灰色的文字來提示用戶該輸入什么。
屬性2:autofocus:讓用戶focus在自己要輸入的地方。

密碼

密碼:type=password,用小圓點顯示。(移動瀏覽器上會顯示最后一個字母,PC上都是小圓點)

多行文本框

<textarea cols="10" rows="20">

輸入驗證[required pattern type nocalidate]

在HTML5之前,只能用jsp來驗證,在html5中,可以驗證一些基本規(guī)則。
(1)required實現(xiàn) <input required minlength="9"> Required表示必填。這是一個布爾型的語言。
(2)使用正則表達(dá)式來驗證:<input pattern="">Pattern是一個正則表達(dá)式,驗證用戶數(shù)輸入的內(nèi)容是否符合正則表達(dá)式。
(3)內(nèi)置type來驗證:<input type="url">Type最主要的作用,在可用性上做一些輔助。 對于讀屏軟件,移動端的布局展示是有區(qū)別的。比如type=url,會展示http://, type=email,移動端的@符號會展示出來。最重要的輸入驗證,只有輸入正確的type才能驗證提交。
(4)Novalidate:如果在JS中實驗了驗證規(guī)則,一般就在html中寫novalidate。<form action="/index" novalidate>

radio

1、radio:一般input輸入框是建議使用其他的方式,比如選擇框,就比較好。
2、如果name是相同的,那這三個就屬于一個radio group,那么選中的狀態(tài)就是互斥的。

checkbox

1、checkbox是復(fù)選框,可以選多個,也可以全選。
2、提交的方式是 & ,所以服務(wù)端需要按照 & 來解析數(shù)據(jù)。

label

1、label:提升易用性。checkbox只能點擊小方塊生效,而label擴(kuò)大了點擊范圍,使得在點擊文字的時候也能夠選中。
2、實現(xiàn)方式:<label></label>
3、label也可以和input的框關(guān)聯(lián),相當(dāng)于對這個input框做一個說明。

select

select:選項。加上multiple可以實現(xiàn)多選。(得按著shift鍵來選中多個)

optgroup

分組:optgroup
實現(xiàn):<optgroup label="fruit"><option ><option>...

hidden

hidden:當(dāng)某些要提交的信息并不想展示在頁面上的時候。

文件選擇

1、實現(xiàn)方式:<input type="file">
2、如果表單里包含了文件,需要在form里寫一個 enctype= multipart/form-data, 因為正常情況下字段都是以url編碼的形式提交的,但是文件不行,得使用multipart的方式。multipart會用分隔符把要提交的內(nèi)容隔開,服務(wù)器好處理。
3、加上multiple屬性,HTML5可以支持多個文件上傳。
4、HTML5還增加了一個accept屬性,可以指定只能上傳圖片,實現(xiàn)方式為 accept="image/*"
5、實際很多時候并不會采用這種原生的方式去提交文件,因為有時候并不想一起提交這么多,這塊兒很多時候是用AJAX來做。

date&time

HTML原生實現(xiàn)了日歷控件。
<input type="date">
<input type="time">
<input type="month">

number & range

數(shù)字一般需要驗證合法性。
number:會有上下箭頭來增加和減少數(shù)字;可以點也可以自己輸入。
range:是一個滑竿;
ps:這只是交互的區(qū)別。原生的組件長的都比較丑,css中會去美化各種組件。

button

button:提交按鈕一般是button來做的。button的默認(rèn)值就是submit,這樣可能提交整個表單。當(dāng)type=button的時候,點擊的行為需要完全由js來實現(xiàn)。

reset

<button type="reset"> reset不是清空,是恢復(fù)默認(rèn)狀態(tài)。

回車提交

<button onclick="alert(1)" >
回車提交:onclick,按回車之后,瀏覽器會自動觸發(fā)第一個button的click事件。
注意,最好不要禁用這個回車提交。所以,表單提交的時候最好是綁定submit事件。

控件狀態(tài)[disabled readonly]

1、控件狀態(tài):disabled和readonly狀態(tài),重要的字段不允許修改。
2、readonly的字段改不了,但是可以提交。
3、disable的值不會提交到服務(wù)器。

表單設(shè)計原則

1、幫助用戶不出錯
2、盡早提示錯誤
3、擴(kuò)大選擇/點擊區(qū)域
4、空間較多時要分組
5、主要動作和次要動作

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容