第一個(gè)HTML表單

引言

這篇文章可以給你關(guān)于以下內(nèi)容的的體驗(yàn):

  • 創(chuàng)建一個(gè)表單
  • 發(fā)送表單數(shù)據(jù)

什么是HTML表單?

表單是用戶與服務(wù)器或應(yīng)用交互的主要方式之一。它們?cè)试S用戶向服務(wù)器發(fā)送數(shù)據(jù)。表單中的數(shù)據(jù)大多會(huì)被發(fā)送至服務(wù)器,但也可以被網(wǎng)頁截獲,使用。

一個(gè)表單是由一個(gè)或多個(gè)widget(部件,工具)組合而成的。
這些widget可以是

  • text field(single line or multiline)(文本框)
  • select box(下拉框)
  • button(按鈕)
  • checkbox(復(fù)選框)
  • radio button(單選框)

大多數(shù)情況下,每一個(gè)widget都有一個(gè)label與之匹配,用于描述widget的用途。

設(shè)計(jì)你的表單

建立一個(gè)簡單地模型可以幫助你確定你想從用戶那兒得到的正確的數(shù)據(jù)。
在本文中,我們將建立一個(gè)簡單地聯(lián)系人表單。首先,讓我們先畫一個(gè)簡單的草圖


來自mozilla mdn
來自mozilla mdn

我們的表單包含三個(gè)文本框和一個(gè)提交按鈕。當(dāng)用戶點(diǎn)擊提交按鈕時(shí),數(shù)據(jù)將被發(fā)送到指定的服務(wù)器上

來手動(dòng)寫一個(gè)

我們將使用以下5個(gè)HTML元素來實(shí)現(xiàn)我們的聯(lián)系人表單

  • <form>
  • <label>
  • <input>
  • <textarea>
  • <button>

<form> 元素

所有的HTML表單都被包含在一對(duì)<form>...</form>元素標(biāo)簽內(nèi),比如:

<form action = "/my-handling-form-page" method = "post">
    ...
</form>

與<div>和 <p>元素類似,<form> 元素也是一個(gè)容器元素,并且它也支持特定的屬性。
實(shí)踐中一般至少確定actionmethod 屬性

  • action 屬性定義了表單提交數(shù)據(jù)的地址
  • method 屬性定義了哪一個(gè)HTTP方法將被調(diào)用("post" or "get")

<label> , <input> ,and <textarea> 元素

我們的表單包含三個(gè)文本框,并且每一個(gè)文本框都有對(duì)應(yīng)的標(biāo)簽。姓名框只是一個(gè)簡單的單行文本框,e-mail框則只能接受e-mail地址,消息框則是一個(gè)簡單的多行文本框。

<form action = "/my-handling-form-page" method = "post">
    <div>
        <label for = "name">Name:</label>
        <input type = "text" id = "name" name = "user_name" >
    </div>
    <div>
        <label for = "mail">E-mail:</label>
        <input type = "email" id = "mail" name = "user_mail" >
    </div>
    <div>
        <label for = "msg" >Message:</label>
        <textarea id = "msg" name = "user_msg"></textarea>
</form>

我們使用<div> 標(biāo)簽組織我們的代碼和樣式。
所有<label> 標(biāo)簽均通過 for 屬性與對(duì)應(yīng)的widget匹配。for屬性的值是widget的ID。

<input> 元素最重要的屬性是type屬性,type屬性定義了<input> 元素的行為。

也許你會(huì)對(duì)fortype屬性感到疑惑,繼續(xù)往下閱讀,在你看到更多的實(shí)例之后,你會(huì)有更加全面的認(rèn)識(shí),也會(huì)對(duì)他倆更加熟悉。
另外,注意<input> 與 <textarea>...</textarea> 的語法差異。這種語法差異體現(xiàn)在定義默認(rèn)值上

<input type = "text" value = "你好">
<textarea>你好</textarea>

<button> 元素

最后,我們需要向我們的表單添加一個(gè)按鈕(button),使用戶可以發(fā)送他們的數(shù)據(jù)。

<div class = "button">
    <button type = "submit" >提交</button>
</div>

<button> 也有一個(gè)type屬性,其值可以是:submit,reset,button

  • submit 將數(shù)據(jù)發(fā)送給由form表單中的action屬性定義的服務(wù)器或網(wǎng)頁
  • reset 重新設(shè)定表單中的所有widgets的值為默認(rèn)值
  • button 用于自定義,通過javascript實(shí)現(xiàn)

向服務(wù)器發(fā)送數(shù)據(jù)

你可能會(huì)發(fā)現(xiàn)我們上面的代碼中,每個(gè)widget有"多余的"屬性---name。其實(shí)它并不多余,因?yàn)楸韱沃械臄?shù)據(jù)是要提交給服務(wù)器處理的,而瀏覽器和服務(wù)器都需要對(duì)數(shù)據(jù)進(jìn)行分類,因此,name 屬性是必須的。

最終效果

結(jié)果

只是有點(diǎn)丑...

學(xué)習(xí)于:mozilla mdn

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

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,190評(píng)論 1 92
  • 表單基礎(chǔ)知識(shí) 在HTML中,表單是由 元素來表示的,而在JS中,表單對(duì)應(yīng)的則是HTMLFormElement類型。...
    oWSQo閱讀 980評(píng)論 0 1
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 7,384評(píng)論 0 17
  • HTML表單 在HTML中,表單是 ... 之間元素的集合,它們?cè)试S訪問者輸入文本、選擇選項(xiàng)、操作對(duì)象等等,然后將...
    蘭山小亭閱讀 3,515評(píng)論 2 14
  • 蘿卜種子買的最多,有1斤。是因?yàn)楫?dāng)時(shí)看見賣家在介紹頁面上顯示,生蘿卜苗可以象生豆芽一樣過程去操作。 小時(shí)候是見過母...
    雲(yún)蘇閱讀 750評(píng)論 0 0

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