.HTML中表單元素的基本概念
HTML表單是HTML元素中較為復雜的部分,表單往往和腳本,動態頁面,數據處理等功能相結合,因此是制作動態網站很重要的內容.
表單一般用來收集用戶的輸入信息
2.表單工作原理
訪問者在瀏覽有表單的網頁時,可填寫必需的信息,然后按某個按鈕提交,這些信息通過網絡傳送到服務器上.服務器上專門的程序對這些數據進行處理,如果有錯誤會返回錯誤信息,并要求糾正錯誤.當數據完整無誤后,服務器反饋一個輸入完成的信息
3.表單的功能
功能:表單用于向服務器傳輸數據,從而實現用戶與WEB服務器的交互表單能夠包含input系統標簽,比如文本字段,復選框,單選框,提交按鈕等表單還可以包含textarea,select,fieldset,label標簽.
4.表單的常用類型及說明
1.表單常用的類型有:
2.表單屬性:
3.文本輸入框(text):
當用戶要在表單中輸入字母,數字內容時,就會用到文本域
代碼如下:
注意,表單本身并不可見.同時,在大多瀏覽器中,文本域的缺省寬度是20個字符.
在密碼域中輸入的字符,瀏覽器將使用項目符號來代替這些字符.
4.單選按鈕(radio):
當用戶從若干給定的選擇中選取一個選項時,就會用到單選框.
代碼如下:
用戶只能從眾多選擇中選取一個選項.當用戶點擊一個單選按鈕時,該按鈕會變為選中狀態,其他所有按鈕會變為非選中狀態.
5.復選框(checkboxes)
當用戶需要從若干給定的選擇中選取一個或多個選項時,就會用到復選框
代碼如下:
用戶一次可以選擇多個選項.6.重置按鈕(reset)
重置按鈕會清除當前頁面上的用戶輸入的所有數據,把當前頁面恢復到打開時的樣子.
代碼如下:
<form><p><input type="reset"></p></form>
7.提交按鈕
會在當前頁面生成一個提交按鈕,用戶點擊此按鈕,瀏覽器就會把當前頁面用戶輸入的數據傳送到服務端
代碼如下:
<form><p><input type="button" value="按鈕"/></p></form>
8.提交文件
當需要把客戶端的文件發送到服務端時,需要用到提交文件按鈕
代碼如下:
<form action="/index/" method="post"><p><input type="file"/></p></form>
上傳文件注意兩點: 請求方式必須是post enctype="multipart/form-data"
9.下拉菜單
當需要用戶從很多選項中選擇一個或多個選項時,也可以使用下拉列表.
代碼如下:
這樣的下拉列表,用戶只能從其中選擇一個選項,當需要用戶選擇兩個或以下時,可以添加參數來進行控制.代碼如下:
還可以在OPTION
中添加selected="selected"
選項來設置默認值.10.表單屬性
1.action屬性的說明:
使用action選項來指定服務端的腳本來處理被提交的表單
<form action="/index/" method="post">
如果省略action屬性,則action會被設置為當前頁面
2.method屬性的說明:
method屬性規定在提交表單時所用的http方法(POST或GET)
<form action="/index/" method="post">
或
<form action="/index/" method="get">
3.get方法或post方法的使用方式說明:
如果表單提交是被動的(比如搜索引擎查詢),并且沒有敏感信息.
當使用get方法時,表單的數據在頁面地址欄中是可見的
因此,get最適合少量數據的提交,瀏覽器會設定容量限制
如果表單正在更新數據,或者包含敏感信息(比如密碼)時應該使用post,post的安全性更好.
因為在頁面地址欄中被提交的數據是不可見的.
切圖 qietu(.com)
. 打開一個頁面,通過效果圖來引入今天的內容:從效果圖上看出,網頁右側有一個登錄區域,里面包含文本框,密碼框,下拉菜單、復選框、按鈕等,當點擊按鈕時,該頁面會自動將用戶輸入的內容發送到服務器,這個時候就需要用到表單了
2. 什么是表單
(1) 通俗說表單是一個將用戶輸入的信息組織起來的容器,需要將用戶輸入信息填寫到表單容器中,當點擊按鈕時,表單會將數據統一發送到服務器
(2) 典型的應用場景:登錄注冊 網上訂單 網上搜索 在網頁中應用非常廣泛,例如申請郵箱,需要先填寫注冊信息,然后才能申請提交,同時如果希望登錄郵箱,也必須在登錄郵箱才能進入到郵箱里,這就是表單典型應用
(3) 為了方便操作,表單提供了多種表單元素:文本框 密碼框單選按鈕 復選框 下拉列表多行文本等等。在接下來的學習中,逐步掌握在網頁中創建表單的方法以及常用的表單元素
3. 表單怎么使用呢
(1) 在代碼視圖下,光標移動到需要放置表單的位置上,點擊--插入---表單----表單,可以在工作區插入一個表單。由于表單僅僅是一個容器,不會在瀏覽器顯示。
(2) 可以看到 表單使用<form></form>標簽表示,在開始和結束標簽之間存放表單元素等內容。
(3) 表單屬性
① 為了能夠實現信息提交目的,還需要為表單指定要提交的頁面地址,并指定提交方式
② 光標停留在表單任意位置,單擊屬性面板會自動顯示表單相關的屬性
③ Id:設置表單的id。相當于現實中身份證,處理表單,一般都要表單設置id id=””
④ 動作:當提交表單時,如何向發送表單數據,處理表單數據的目標地址 action=””
⑤ 方法:規定提交方式 取值 get或者post method =””
⑥ 咱們前期學網頁的時候,先不考慮這些元素,簡單了解就好,后期跟程序在進行整合
(4) 表單屬性
① 最常用的輸入元素是單行文本框,提供給用戶輸入單行文本信息,比如用戶名的輸入。步驟如下,光標停留到表單里 插入---表單---文本域
② 插入單行文本框之后,鼠標單擊選中文本框
1) 元素名稱:對應于屬性面板中name, 用來指定表單元素的名稱,提交的時候,填寫的數據是隨著表單名稱一起提交的
2) 字符寬度:單行文本框的寬度 屬性面板中 size
3) 最多字符:允許用戶輸入的最多字符數.超過該數值,將無法繼續輸入 屬性面板中 Max Length
4) 初始值:打開網頁的時候,文本默認的顯示文本.一般用于提示用戶輸入信息 屬性面板中 value
5) Type: 表單元素的類型 name:表單元素的名稱 size:表單元素的寬度 maxlength:允許輸入的最大字符 value文本框的初始值
③ 密碼框
1) 用戶登錄的表單,為了保障賬戶的安全,在需要密碼的地方使用*代替。防止密碼被竊取的風險,只不過是文本顯示輸入的文本,密碼框將用戶輸入文本為 *來顯示。
2) 代碼顯示-- 除了type屬性值不一樣之外,其他屬性和單行文本框是一樣的
④ 單選按鈕
1) 也是網頁中應用非常廣泛,主要作用是 來限制用戶選中一組數據中的其中一個,以確保數據的準確性。 例如用戶的性別的時候,正確的是 男或者女,如果是單行文本,可以隨意填寫,往往提交的信息不準確
2) 插入---表單----單選按鈕:插入一個單選按鈕,如果需要多個話,在重復上述步驟即可
3) 選中插入的單選按鈕,發現效果不是我們期待的,兩個單選按鈕可以同時選中。那咱們如何能選中一個呢
4) 可以根據單選按鈕名稱進行分組,相同名稱的一組按鈕才能相互排斥。只需要在多個單選框設置為相同的名稱就可以了, 被選中的單選按鈕連同該項的值會一起提交
5) 是否是默認選中,checked:表示按鈕的默認選中的狀態
⑤ 復選框
1) 在一些特殊情況下,并不強調要求用戶選擇其中的一項,例如選擇自己興趣愛好的,愛好可能會有多項,就需要用到復選框,允許用戶選擇其中多項內容
2) 插入---表單---復選框,如果想添加多個,重復上述步驟
3) 同單選按鈕一樣,同一組的復選框應當設置統一名稱,便于提交數據,同時也可以為復選框設置默認選中,可以設置多個默認選中狀態
⑥ 下拉列表
1) 主要用在多個項目中選中其中一個場景,可以使用單選或者多選按鈕來定義,如果備選選項較多是,會占用較大空間, 用戶選擇自己所在的省份和城市變得不太現實,下拉列表能解決這一問題而出現的。占用極少空間顯示較多內容
2) 插入----表單---選擇,可以向表單中插入一個下拉列表,剛創建的列表的時候,是沒有內容的,給列表添加 列表值
3) 單擊列表值,會彈出列表設置面板,設置下拉備選框
4) 下拉列表:select標簽 列表項使用option標簽
5) Select name:下拉列表的名稱,option是放入到select標簽內的,使用value屬性表示當前項的值,selected 該選項默認是選中的 option開始標簽和結束標簽之間的內容是 顯示在用戶面前的文本
⑦ 按鈕
1) 是表單中是不可缺少的部分,寫好表單元素之后,需要添加按鈕,用來響應用戶的操作。
2) 常見按鈕:提交、重置、普通、圖片
a. 提交按鈕:整個表單提交的內容發送到服務器
b. 重置按鈕:整個表單還原初始狀態
c. 普通按鈕:沒有任何反應,通常和javascript特效方面,后面課程繼續學習
d. 圖片:主要是為了彌補普通按鈕在外觀上不足,允許我們使用一張圖片來代替
3) 插入---表單---按鈕, 功能通過屬性面板中
4. 表單在實際項目中怎么使用,看一下綜合案例
(1) 制作 網易郵箱登錄頁面
(2) 演示內容------只寫 表單 案例,其他內容,寫好。
們在瀏覽網頁的時候,可以看到頁面上有導航欄,逛商城的時候會看到商品的詳情頁里有商品的簡介,以及在注冊或者申請一個網站會員的時候會讓我們填寫各種各樣的信息,這些分別由列表、表格、表單來完成的,今天我學習了這些知識,下面我把我學到的知識梳理一下,以及在學習中遇到的坑總結一下,希望能給其他初學者一些幫助,同時,如有不足之處,也請各位大神指出來,我也好學習學習,提升自我。
網站導航欄
HTML列表在網站頁面中使用的是相當廣泛。如上圖的網站導航欄,就是使用了列表實現的,再比如說,一個欄目的文章列表等等,都是使用了列表功能,根據我今天學到的內容,我總結了一下,總共三大知識點:
1.無序列表:
可以在<ul>標簽中使用type屬性來控制每一項前面的圓點的樣式:
<h3>商品列表</h3>
<ul start="2">
<li>iPhone 12</li>
<li>MacBook Air</li>
<li>AirPods Pro</li>
</ul>
2.有序列表:
<h3>商品列表</h3>
<ol>
<li>iPhone 12</li>
<li>MacBook Air</li>
<li>AirPods Pro</li>
</ol>
有序列表
可以在<ol>標簽中使用start屬性來控制第一項數字起始值:
<h3>商品列表</h3>
<ol start="2">
<li>iPhone 12</li>
<li>MacBook Air</li>
<li>AirPods Pro</li>
</ol>
效果如圖:
start=2
可以使用type規定在列表中使用的標記類型,type值有五種:
不過我個人感覺,這個type屬性的作用貌似不多大,基本上都是以默認值,就是數字來作為每一項的標記了吧。
3.自定義列表:
<dl>
<dt>名稱:</dt>
<dd>小白學編程</dd>
<dt>地址:</dt>
<dd>河南省鄭州市二七區</dd>
<dt>聯系</dt>
<dd>電話:<a href="tel:189****1122">189****1122</a></dd>
<dd>郵箱:<a href="mailto:admin@admin.com">admin@admin.com</a></dd>
</dl>
自定義列表
備注:根據本小白查的文檔,a標簽的href屬性,不僅可以填寫鏈接,還可以用:
【tel:電話號碼】的格式點擊進行撥號,只不過是在電腦上需要有能撥號的軟件;
撥號
【mailto:郵箱地址】的格式可以快速拉起發送郵件的軟件。
發送郵件
不過我不知道這個的兼容性怎么樣,如果有知道的大佬,可以在評論區指導一下,跪謝!
一個表格的基本結構:
<table class="table">
<!-- caption:表格標題 -->
<caption>
商品信息表
</caption>
<!-- 表頭 -->
<thead>
<!-- 添加表格數據的時候必須先添加一行 -->
<tr>
<td>ID</td>
<td>商品名稱</td>
<td>單價</td>
<td>單位</td>
<td>數量</td>
<td>金額</td>
</tr>
</thead>
<!-- 一個表格可以有多個tbody,但是只能有一個thead -->
<tbody>
<tr>
<td>1</td>
<td>iPhone 12 mini</td>
<td>5499</td>
<td>部</td>
<td>100</td>
<td>549900</td>
</tr>
</tbody>
</table>
Excel里的表格可以進行行與列的合并,單元格直接也能合并,那么HTML表格也是可以的,可以使用colspan進行列合并,rowspan進行行的合并。利用這兩個屬性,我們可以使用<table>標簽寫一個課程表。
HTML表單是用于搜集用戶輸入的不同類型數據的,它包含了不同類型的<input>元素,如:文本框、單選框、復選框、提交按鈕等等。因此可以看出,<input>元素是表單中最重要的元素。
表單的基本格式:
<form action="" method="POST" class="register">
<!-- 這里面可以放input元素 -->
</form>
根據我學習的成果,我總結出了input元素的七種type類型并一一做了記錄:
1.type="text" 單行文本框
<label for="username">賬號:</label>
<input type="text" name="username" id="username" value="admin" required>
單行文本框
2.type="email" 郵箱型文本框
<label for="email">郵箱:</label>
<input type="email" name="email" id="email" value="html@html.cn" required>
郵箱型文本框還會對輸入的內容進行校驗,如果不符合郵件地址的格式會彈出如上圖提示。
3.type="password" 密碼型文本框/非明文
<label for="password">密碼:</label>
<input type="password" name="password" id="password" value="" placeholder="密碼不少于6位" required>
密碼型文本框
輸入內容
值得注意的是,密碼型文本框在輸入密碼的時候都是以小黑點進行替換的,并不會顯示我們輸入的內容。
4.type="radio" 單選框
<label for="">性別:</label>
<div>
<input type="radio" name="gender" value="male" id="male">
<label for="male">男</label>
<input type="radio" name="gender" value="male" id="male">
<label for="female">女</label>
<input type="radio" name="gender" value="male" id="male" checked>
<label for="secret">保密</label>
</div>
單選框
單選框(radio)的name值必須都相同才能保證值的唯一性,默認選中使用checked屬性。
5.type="checkbox" 復選框
<label for="#">興趣:</label>
<div>
<input type="checkbox" name="hobby[]" value="basketball" id="basketball">
<label for="basketball">籃球</label>
<input type="checkbox" name="hobby[]" value="game" id="game">
<label for="game">游戲</label>
<input type="checkbox" name="hobby[]" value="travel" id="travel">
<label for="travel">旅游</label>
<input type="checkbox" name="hobby[]" value="program" id="program">
<label for="program">編程</label>
</div>
復選框
復選框的name值一定要用數組表示,否則,服務器在接收數據的時候不能獲取所有選中的值。
6.type="file" 文件域
<label for="user-pic">頭像:</label>
<input type="file" name="user_pic" id="user-pic" />
上傳文件
7.type="hidden" 隱藏域
<input type="hidden" name="MAX_FILE_ZIE" value="80000" />
隱藏域在頁面是看不到的,是服務器端進行處理的一項數據。
通過上述的七種<input>元素類型,我得出一個結論就是一個<input>元素至少包含有三個屬性:
除了上述的<input>元素的7種標簽類型,還有下拉列表、文本域這些常用的控件。
<label for="">學歷:</label>
<select name="edu" id="eud">
<option value="1">初中</option>
<option value="2">高中</option>
<option value="3" selected>本科</option>
<option value="4">研究生</option>
<option value="5" label="老司機">博士</option>
</select
下拉列表/下拉框
<label for="">學歷:</label>
<select name="edu" id="eud">
<option value="1">初中</option>
<option value="2">高中</option>
<option value="3" selected>本科</option>
<option value="4">研究生</option>
<option value="5" label="老司機">博士</option>
</select>
multiple、size用法
<label for="comment">備注:</label>
<textarea name="comment" id="comment" cols="30" rows="10"></textarea>
上傳文件需要注意兩點:
<form action="" method="POST" class="register" enctype="multipart/form-data">
<label for="user-pic">頭像:</label>
<!-- 隱藏域在頁面是看不到的,是服務器端進行處理的一項數據。 -->
<input type="hidden" name="MAX_FILE_ZIE" value="80000" />
<input type="file" name="user_pic" id="user-pic" />
<div class="user-pic" style="grid-column: 2;"></div>
<button>提交</button>
</form>
enctype有3個值:
<form action="check.php" method="get" id="register">
<div class="box">
<label for="email">郵箱:</label>
<input type="email" form="register" name="email" id="email" placeholder="demo@email.com" />
<label for="password">密碼:</label>
<input type="password" form="register" name="password" id="password" placeholder="至少8位" />
<button form="register">提交</button>
</div>
</form>
<label for="username">帳號:</label>
<input type="text" name="username" id="username" placeholder="不能為空" />
注冊表單
例如:以下情況就是沒有在空間中寫form屬性的情況,我們可以看到,在瀏覽器里沒有獲取到密碼password的值,只獲取到了username和email的值:
沒有獲取到password的值
我個人的理解是:如果不把表單控件寫到form內部,這樣會方便js獲取表單元素的值,但是這樣寫會容易影響布局,造成布局混亂,建議還是按照標準的寫法,把所有的控件都寫到form表單內部。
至于什么時候使用GET方法,什么時候使用POST方法呢?通過今天的學習,我做了如下總結:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="css/table.css">
<title>表格:行與列的合并</title>
</head>
<body>
<table class="lesson">
<caption>
xxxx小學課程表
</caption>
<thead>
<tr>
<th colspan="2"></th>
<th>星期一</th>
<th>星期二</th>
<th>星期三</th>
<th>星期四</th>
<th>星期五</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="4">上午</td>
<td>1</td>
<td>語文</td>
<td>數學</td>
<td>音樂</td>
<td>社會</td>
<td>科學</td>
</tr>
<tr>
<td>2</td>
<td>數學</td>
<td>語文</td>
<td>音樂</td>
<td>語文</td>
<td>數學</td>
</tr>
<tr>
<td>3</td>
<td>美術</td>
<td>音樂</td>
<td>音樂</td>
<td>數學</td>
<td>音樂</td>
</tr>
<tr>
<td>4</td>
<td>社會</td>
<td>體育</td>
<td>音樂</td>
<td>體育</td>
<td>語文</td>
</tr>
<tr class="rest">
<td colspan="7">中午休息</td>
</tr>
<tr>
<td rowspan="4">下午</td>
<td>5</td>
<td>語文</td>
<td>數學</td>
<td>音樂</td>
<td>社會</td>
<td>科學</td>
</tr>
<tr>
<td>6</td>
<td>數學</td>
<td>語文</td>
<td>音樂</td>
<td>語文</td>
<td>數學</td>
</tr>
<tr>
<td>7</td>
<td>課外活動:</td>
<td colspan="4">各班自行組織,自愿參加</td>
<td>數學</td>
<td>音樂</td> -->
</tr>
</tbody>
</table>
</body>
</html>
效果:
用HTML表格寫一個課程表
個人總結:為了學習這些表單知識,真真的是看了一天,頭都懵了,還有不少內容沒有記住,還是需要多寫多練,其中我認為比較坑的幾個地方是:
在看視頻教程的過程中,我看到好多大佬在用VS Code的時候都是使用了快捷鍵,后來網上搜了一下,原來官方給的就有一個PDF文檔,從VS里就可以進去,在工具的頂部導航欄幫助里,如下圖:
快捷鍵
為了方便大家快速找到,我把官方地址貼出來吧,VS Code快捷鍵PDF文檔:https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf
VS Code快捷鍵
*請認真填寫需求信息,我們會在24小時內與您取得聯系。