整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          16.HTML 表單提交

          現(xiàn)代web開發(fā)中,表單是用戶與網(wǎng)站互動的重要方式之一。HTML5為表單提交提供了強大的功能和豐富的輸入類型,讓收集和驗證用戶輸入數(shù)據(jù)變得更加容易和安全。本文將詳細介紹HTML5表單的各個方面,包括基本結(jié)構(gòu)、輸入類型、驗證方法和提交過程。

          基本結(jié)構(gòu)

          HTML表單由<form>標簽定義,它可以包含輸入字段、標簽、按鈕等元素。一個基本的表單結(jié)構(gòu)如下所示:

          <form action="/submit_form" method="post">
            <label for="name">姓名:</label>
            <input type="text" id="name" name="name" required>
            
            <label for="email">電子郵箱:</label>
            <input type="email" id="email" name="email" required>
            
            <input type="submit" value="提交">
          </form>
          

          在這個例子中,表單有兩個輸入字段:姓名和電子郵箱。每個輸入字段都有一個<label>標簽,這不僅有助于用戶理解輸入的內(nèi)容,也有助于屏幕閱讀器等輔助技術(shù)。<form>標簽的action屬性定義了數(shù)據(jù)提交到服務(wù)器的URL,method屬性定義了提交數(shù)據(jù)的HTTP方法(通常是post或get)。

          輸入類型

          HTML5提供了多種輸入類型,以支持不同的數(shù)據(jù)格式和設(shè)備。

          文本輸入

          <!-- 單行文本 -->
          <input type="text" name="username" placeholder="請輸入用戶名" required>
          
          <!-- 密碼 -->
          <input type="password" name="password" required minlength="8">
          
          <!-- 郵箱 -->
          <input type="email" name="email" required placeholder="example@domain.com">
          
          <!-- 搜索框 -->
          <input type="search" name="search" placeholder="搜索...">
          

          數(shù)值輸入

          <!-- 數(shù)值 -->
          <input type="number" name="age" min="18" max="100" step="1" required>
          
          <!-- 滑動條 -->
          <input type="range" name="volume" min="0" max="100" step="1">
          
          <!-- 電話號碼 -->
          <input type="tel" name="phone" pattern="^\+?\d{0,13}" placeholder="+8613800000000">
          

          日期和時間輸入

          <!-- 日期 -->
          <input type="date" name="birthdate" required>
          
          <!-- 時間 -->
          <input type="time" name="appointmenttime">
          
          <!-- 日期和時間 -->
          <input type="datetime-local" name="appointmentdatetime">
          

          選擇輸入

          <!-- 復(fù)選框 -->
          <label><input type="checkbox" name="interest" value="coding"> 編程</label>
          <label><input type="checkbox" name="interest" value="music"> 音樂</label>
          
          <!-- 單選按鈕 -->
          <label><input type="radio" name="gender" value="male" required> 男性</label>
          <label><input type="radio" name="gender" value="female"> 女性</label>
          
          <!-- 下拉選擇 -->
          <select name="country" required>
            <option value="china">中國</option>
            <option value="usa">美國</option>
          </select>
          

          特殊輸入

          <!-- 顏色選擇器 -->
          <input type="color" name="favcolor" value="#ff0000">
          
          <!-- 文件上傳 -->
          <input type="file" name="resume" accept=".pdf,.docx" multiple>
          

          驗證方法

          HTML5表單提供了內(nèi)置的驗證功能,可以在數(shù)據(jù)提交到服務(wù)器之前進行檢查。

          必填字段

          <input type="text" name="username" required>
          

          正則表達式

          <input type="text" name="zipcode" pattern="\d{5}(-\d{4})?" title="請輸入5位數(shù)的郵政編碼">
          

          數(shù)值范圍

          <input type="number" name="age" min="18" max="99">
          

          長度限制

          <input type="text" name="username" minlength="4" maxlength="8">
          

          表單提交

          當用戶填寫完表單并點擊提交按鈕時,瀏覽器會自動檢查所有輸入字段的有效性。如果所有字段都滿足要求,表單數(shù)據(jù)將被發(fā)送到服務(wù)器。否則,瀏覽器會顯示錯誤信息,并阻止表單提交。

          <input type="submit" value="提交">
          

          可以使用JavaScript來自定義驗證或處理提交事件:

          document.querySelector('form').addEventListener('submit', function(event) {
            // 檢查表單數(shù)據(jù)
            if (!this.checkValidity()) {
              event.preventDefault(); // 阻止表單提交
              // 自定義錯誤處理
            }
            // 可以在這里添加額外的邏輯,比如發(fā)送數(shù)據(jù)到服務(wù)器的Ajax請求
          });
          

          完整例子

          <!DOCTYPE html>
          <html lang="en">
          <head>
          <meta charset="UTF-8">
          <title>表單提交并顯示JSON</title>
          </head>
          <body>
          
          <!-- 表單定義 -->
          <form id="myForm">
            <label for="name">姓名:</label>
            <input type="text" id="name" name="name">
            <br>
          
            <label for="email">電子郵件:</label>
            <input type="email" id="email" name="email">
            <br>
          
            <input type="button" value="提交" onclick="submitForm()">
          </form>
          
          <script>
          // JavaScript函數(shù),處理表單提交
          function submitForm() {
            // 獲取表單元素
            var form = document.getElementById('myForm');
            
            // 創(chuàng)建一個FormData對象
            var formData = new FormData(form);
            
            // 創(chuàng)建一個空對象來存儲表單數(shù)據(jù)
            var formObject = {};
            
            // 將FormData轉(zhuǎn)換為普通對象
            formData.forEach(function(value, key){
              formObject[key] = value;
            });
            
            // 將對象轉(zhuǎn)換為JSON字符串
            var jsonString = JSON.stringify(formObject);
            
            // 彈出包含JSON字符串的對話框
            alert(jsonString);
            
            // 阻止表單的默認提交行為
            return false;
          }
          </script>
          
          </body>
          </html>
          

          在這個例子中:

          1. 我們定義了一個包含姓名和電子郵件輸入字段的表單,以及一個按鈕,當點擊按鈕時會調(diào)用submitForm函數(shù)。
          2. 在submitForm函數(shù)中,我們首先獲取表單元素并創(chuàng)建一個FormData對象。然后,我們遍歷FormData對象,將表單數(shù)據(jù)復(fù)制到一個普通的JavaScript對象formObject中。
          3. 接著,我們使用JSON.stringify方法將formObject轉(zhuǎn)換成JSON字符串。
          4. 最后,我們使用alert函數(shù)彈出一個包含JSON字符串的對話框。

          注意,這個例子中我們使用了type="button"而不是type="submit",因為我們不希望表單有默認的提交行為。我們的JavaScript函數(shù)submitForm會處理所有的邏輯,并且通過返回false來阻止默認的表單提交。如果你想要使用type="submit",你需要在<form>標簽上添加一個onsubmit="return submitForm()"屬性來代替按鈕上的onclick事件。

          結(jié)論

          HTML5的表單功能為開發(fā)者提供了強大的工具,以便創(chuàng)建功能豐富、用戶友好且安全的網(wǎng)站。通過使用HTML5的輸入類型和驗證方法,可以確保用戶輸入的數(shù)據(jù)是有效的,同時提高用戶體驗。隨著技術(shù)的不斷進步,HTML5表單和相關(guān)API將繼續(xù)發(fā)展,為前端工程師提供更多的可能性。

          分享成果,隨喜正能量】修學(xué)務(wù)早,及其精專,習與性成,不異自然也。值得我們用一生去學(xué)習的,就是學(xué)習什么該做,什么不該做,在自己心中畫個圈,干了出圈的事情,傷害的是自己。。

          《VBA信息獲取與處理》教程是我推出第六套教程,目前已經(jīng)是第一版修訂了。這套教程定位于最高級,是學(xué)完初級,中級后的教程。這部教程給大家講解的內(nèi)容有:跨應(yīng)用程序信息獲得、隨機信息的利用、電子郵件的發(fā)送、VBA互聯(lián)網(wǎng)數(shù)據(jù)抓取、VBA延時操作,剪貼板應(yīng)用、Split函數(shù)擴展、工作表信息與其他應(yīng)用交互,F(xiàn)SO對象的利用、工作表及文件夾信息的獲取、圖形信息的獲取以及定制工作表信息函數(shù)等等內(nèi)容。程序文件通過32位和64位兩種OFFICE系統(tǒng)測試。是非常抽象的,更具研究的價值。

          教程共兩冊,八十四講。今日的內(nèi)容是專題八“VBA與HTML文檔”:表單對象的提交與反饋

          第七節(jié) HTML DOM的對象事件及關(guān)聯(lián)

          HTML DOM 允許 JavaScript(腳本語言) 對 HTML 事件作出反應(yīng),當事件發(fā)生時,如當用戶點擊一個 HTML 元素時,可以執(zhí)行 JavaScript。一般來講這些事件包括:

          用戶點擊鼠標時;網(wǎng)頁已加載;圖片已加載;鼠標移動到元素上;輸入字段被改變;HTML 表單被提交;用戶觸發(fā)按鍵

          在我的第五套教程《VBA中類的解讀及應(yīng)用》中我非常系統(tǒng)的講解了事件的含義,事件主要是對象的響應(yīng),我們這節(jié)就幾個實例給出幾個對象的常用響應(yīng)有的是事件本身,有的是相關(guān)的操作。

          1 表單對象的提交與反饋

          表單form對象,有一個方法比較重要,就是submit,這個方法提供了表單的提交的動作。如果我們捕捉頁面的提交按鈕非常困難時,有時候只要對表單,執(zhí)行submit方法,表單也是可以提交的,不需去點擊提交按鈕。

          表單控件,是文本輸入類控件,最常用就是value的屬性了,通過這個屬性,可以往文本框里面添加文本。

          單選框、復(fù)選框,常用的是checked屬性,如果為true就是被選中了,或者直接使用click方法也行。

          下拉列表,如果是單選列表框,可通過selectedIndex屬性去設(shè)置選中項(下拉選項,從1開始編號,如2就是選擇下拉列表的第二個選項),也可以通過value屬性,直接把value指定為要選定的option的value即可,但多選列表框不可用這兩個屬性。另外,所有類別的列表框,都可以通過其內(nèi)含對象集合options(),設(shè)置某個options(x)的selected屬性為true,來設(shè)置選中項。

          還是以百度首頁為示例,我們用程序模擬鍵入查詢數(shù)據(jù)“VBA代碼解決方案”,然后提交查詢,在網(wǎng)頁中看看查詢的結(jié)果:

          Sub MYNZB() '在百度首頁,提交表單

          Dim ie, dmt, fm

          Set ie = CreateObject("InternetExplorer.Application") '創(chuàng)建一個IE對象

          With ie

          .Visible = True '顯示它

          .navigate "http://www.baidu.com" '加載某個頁面

          Do Until .ReadyState = 4 '等待頁面加載完畢

          DoEvents

          Loop

          Set dmt = .document '將IE瀏覽器加載的頁面文檔,賦予dmt變量

          Set fm = dmt.forms("f") '用表單的名稱f,捕捉表單對象

          dmt.all("kw").Value = "VBA代碼解決方案" '用搜索欄的id"kw"捕捉它,并鍵入VBA代碼解決方案

          dmt.all.tags("input")(3).Click '用"百度一下"按鈕的input索引號捕捉它,并模擬按鈕的點擊

          'fm.submit '模擬表單的提交,不一定要click

          End With

          End Sub

          代碼截圖:

          網(wǎng)頁返回的結(jié)果:

          2 Table 對象數(shù)據(jù)的獲取

          表格對象,也是我們提取網(wǎng)頁數(shù)據(jù),最常打交道的對象了。其內(nèi)含rows對象集合,可以使我們訪問表格內(nèi)的每行,每個row對象還內(nèi)含cells對象集合,使我們可以訪問其每行的每個單元格,讀取每個單元格的innertext屬性即可獲取我們所需每個單元格的文本。

          另外,常用的屬性還有l(wèi)ength,這個類似我們VBA里面的count,都是返回某個對象的數(shù)量。

          如下面代碼是提取實時股票漲跌的代碼:

          Sub MYNZC()

          Sheets("Sheet1").Select

          Cells.Clear

          Dim ie, dmt, tb, i&, j&

          Set ie = CreateObject("InternetExplorer.Application") '創(chuàng)建一個IE對象

          With ie

          '.Visible = True '顯示它

          .navigate "http://vip.stock.finance.sina.com.cn/mkt/#hqIndex" '加載某個頁面

          Do Until .ReadyState = 4 '等待頁面加載完畢

          DoEvents

          Loop

          Set dmt = .document '將IE瀏覽器加載的頁面文檔,賦予dmt變量

          Set tb = dmt.all.tags("table")(4) '通過索引號捕捉表格對象

          For i = 0 To tb.Rows.Length - 1 '歷遍其每個行

          For j = 0 To tb.Rows(i).Cells.Length - 1 '歷遍每行的每個單元格

          Cells(i + 1, j + 1) = tb.Rows(i).Cells(j).innertext '將其innertext寫入單元格

          Next

          Next

          End With

          End Sub

          代碼截圖:

          返回的結(jié)果:

          4 圖片images對象地址的獲取

          為了提取網(wǎng)頁中的圖片,我們需要這個圖片的鏈接,我們看看下面的代碼:

          Sub MYNZD()

          Dim ie, dmt

          Set ie = CreateObject("InternetExplorer.Application") '創(chuàng)建一個IE對象

          With ie

          .Visible = True '顯示它

          .navigate "https://baijiahao.baidu.com/s?id=1633425158454774294" '加載某個頁面

          Do Until .ReadyState = 4 '等待頁面加載完畢

          DoEvents

          Loop

          Set dmt = .document '將IE瀏覽器加載的頁面文檔,賦予dmt變量

          Debug.Print dmt.images(1).src '讀取圖片的URL

          End With

          End Sub

          代碼截圖:

          5 Anchor 對象

          文檔中 <a> 標簽每出現(xiàn)一次,就會創(chuàng)建 Anchor 對象。這個就沒啥好示例的了,href屬性返回被鏈接的URL,click可以模擬超鏈接被點擊了。

          這節(jié)涉及到的內(nèi)容較多,希望大家在 的基礎(chǔ)上修正代碼加以使用。

          本節(jié)知識點回向:

          如何提交表單?如何下載圖片的地址?如何獲得表的數(shù)據(jù)?

          本節(jié)參考文件:008工作表.xlsm

          我20多年的VBA實踐經(jīng)驗,全部濃縮在下面的各個教程中,教程學(xué)習順序:


          【分享成果,隨喜正能量】在外的好脾氣,是為人的圓滑,讓你收獲好人緣;在家的好脾氣,是最貴的修養(yǎng),讓你你收獲最好的幸福!。

          多數(shù)PHP程序都使用HTML表單從用戶那里獲取數(shù)據(jù)并計算結(jié)果。

          HTML表單的一些基本原則

          • 選擇適合于收集的數(shù)據(jù)類型和提供交互方式的控件。
          • 清楚標記每一個控件,這樣用戶就可以理解其功能。
          • 盡可能將標簽對齊。將控件的左邊緣對齊。
          • 將相關(guān)的標簽分組,并且通過設(shè)計中使用空白將每一個分組分開。
          • 表單上的控件順序應(yīng)該類似于用戶操作他們的順序。

          創(chuàng)建基本HTML表單

          首先創(chuàng)造一個基本的HTML大綱,包含表單控件;然后將控件進行合并(HTML表單必須包括一個提交按鈕,用戶單擊它可以將表單數(shù)據(jù)發(fā)送到服務(wù)器。)一個單獨的HTML頁面可以包含多個表單。

          • 創(chuàng)建HTML結(jié)構(gòu)

          包含表單的HTML結(jié)構(gòu)和和普通的HTML結(jié)構(gòu)一樣。

          <HTML>
            <HEAD>
            <TITLE>標題放在這</TITLE>
            </HEAD>
          <BODY>
            表單頁面放在這
            </BODY>
            </HTML>

          在包含表單的HTML頁面中可以使用任何HTML標簽。基本的表單使用FROM標簽來說明。該標簽中METHOD屬性接收GET或POST兩個值中的一個。ACTION屬性子明PHP腳本的url,該腳本可以收集通過表單收集的數(shù)據(jù),可以是絕對路徑或者相對路徑

          <FORM METHOD="method" ACTION="url"> 
            中間可以放置表單控件
            </FORM>
          • 合并控件

          兩個常用的基本控件:文本框和提交按鈕。

          文本框:允許用戶鍵入信息以發(fā)送給PHP腳本。NAME屬性為文本提供名稱,PHP腳本可以通過名稱準確訪問其內(nèi)容,因此它應(yīng)該是唯一的且符合PHP變量命名規(guī)則(但不需要$符號),單標簽。VALUE屬性指明出現(xiàn)在提交按鈕上面的標題。創(chuàng)建方式如下:

          <INPUT TYPE = "TEXT" NAME="text">

          提交按鈕:允許用戶將一個表單的內(nèi)容發(fā)送到服務(wù)器,一個HTML表單對應(yīng)應(yīng)該有一個提交按鈕。

          示例:一個完整的HTML表單。

          <HTML>
            <HEAD>
            <TITLE>標題</TITLE>
            </HEAD>
          <BODY>
          <FORM METHOD="POST" ACTION="phpinfo.php">
          <INPUT TYPE="TEXT" NAME="user_name">
          <BR/>
          <BR/>
          <INPUT TYPE="TEXT" NAME="user_email">
          <BR/>
          <BR/>
          <INPUT TYPE="SUBMIT" VALUE="Send the Data">
          </FORM>
            </BODY>
            </HTML>


          • 使用多個表單

          可以在一個HTML頁面中包含多個表單,注意下一個表單的FORM開始之前需要結(jié)束前一個FORM表單。

          <HTML>
            <HEAD>
            <TITLE>標題</TITLE>
            </HEAD>
          <BODY>
            
          <FORM METHOD="POST" ACTION="phpinfo.php">
          <INPUT TYPE="TEXT" NAME="user_name">
          <BR/>
          <BR/>
          <INPUT TYPE="TEXT" NAME="user_email">
          <BR/>
          <BR/>
          <INPUT TYPE="SUBMIT" VALUE="Send the Data">
          <BR/>
          <BR/>
          </FORM>
          
          <FORM METHOD="POST" NAME="phpinfo.php">
          <INPUT TYPE="TEXT" NAME="user_name1">
          <BR/>
          <BR/>
          <INPUT TYPE="TEXT" NAME="user_email1">
          <BR/>
          <BR/>
          <INPUT TYPE="SUBMIT" VALUE="Send the Data1">
          </FORM>
          
            </BODY>
            </HTML>


          創(chuàng)建表單控件

          • 創(chuàng)建自定義的文本框

          文本框的屬性中,TYPE和NAME是必須的,其余是可選屬性。SIZE屬性用于設(shè)置文本框的可視大小;MAXLENGTH指明用戶鍵入字符的最大長度;VALUE給出了一個最初顯示在文本框中的值。

          <input type="text" name="" size="" maxlength="" value="">
          • 創(chuàng)建文本區(qū)域

          文本區(qū)域可以輸入多行文本。NAME和ROWS屬性是必須的。ROWS屬性表明了文本區(qū)域內(nèi)可以看到的文本行數(shù),充滿時會滾動。COLS屬性指明可見文本列數(shù)與行數(shù)類似。WRAP屬性指明文本區(qū)域內(nèi)單詞換行的方式,可以指定如下值。該標簽為雙標簽。

          說明

          off

          禁止單詞換行但用戶可以輸入換行符強制換行

          virtual/soft

          各行顯示為換行,但是換行并沒有被發(fā)送到服務(wù)器

          physica/hard

          啟用了單詞換行

          <inputarea name="" rows="" cols="" wrap="">
          • 創(chuàng)建密碼框

          創(chuàng)建密碼框的語法與文本框相同,但要將TYPE屬性指定為PASSWORD而不是TYPE。

          <input type="password" name="" size="" maxlength="" value="">
          • 創(chuàng)建復(fù)選框

          取兩個值中的一個,即二選一。TYPE屬性是必須的,checked屬性出現(xiàn),該復(fù)選框默認情況會被選定。value屬性指定復(fù)選框被選定情況下被發(fā)送到服務(wù)器的值,默認發(fā)送on值。法如下:

          <input type="checkbox" name="" checked value="">
          • 創(chuàng)建單選按鈕

          語法與復(fù)選框?qū)傩院x相同,但是TYPE屬性的值必須是RADIO,NAME屬性是必須的。

          <input type="radio" name="" checked value="">
          • 創(chuàng)建列表框

          用戶可以選擇一個或者多個選項,它是一個滾動菜單。

          <select name="" multipile size="">options go here</select>

          name屬性是必須的,multipile屬性指明用戶可以通過按下crtl鍵并單擊多個選項來選擇它們

          列表框的單選行為可作為單選按鈕。

          <option selected value="text"></options>
          • 創(chuàng)建隱藏域
          <input type="hidden" name="text"value="">
          • 實現(xiàn)上傳文件的HTML表單
          <input type="FILE" name="name" accept="time" value="text">

          其中type屬性是必須的。格式通過使用MIME碼指定。常用的格式如下:


          超文本標記語言文本 .html,.html text/html

            普通文本 :txt text/plain

            word文檔:application/msword

            RTF文本 :rtf application/rtf

            GIF圖形 :gif image/gif

            JPEG圖形 :jpeg,

            jpg: image/jpeg

            au聲音文件:au audio/basic

            MIDI音樂文件 :mid,.midi audio/midi,audio/x-midi

            RealAudio音樂文件 .ra, .ram audio/x-pn-realaudio

            MPEG文件 .mpg,.mpeg video/mpeg

            AVI文件 .avi video/x-msvideo

            GZIP文件 .gz application/x-gzip

            壓縮文件.rar application/octet-stream

            壓縮文件.zip application/x-zip-compressed

            TAR文件 .tar application/x-tar


          更多提交表單的信息

          • 使用圖像提交數(shù)據(jù)
          <input type="image" src="url" name="text" align="align">
          • 創(chuàng)建重置按鈕
          <input type="reset" value="text">

          主站蜘蛛池模板: 久久精品一区二区三区不卡| 无码精品人妻一区二区三区AV| 国产熟女一区二区三区四区五区| 午夜DV内射一区二区| 亚洲国产欧美一区二区三区| 国产福利精品一区二区| 在线播放偷拍一区精品| 色偷偷av一区二区三区| 伊人久久大香线蕉av一区| 午夜无码一区二区三区在线观看| 亚洲一区二区三区高清不卡| 色欲AV蜜臀一区二区三区| 无人码一区二区三区视频| 国产高清在线精品一区二区 | 亚洲国产精品一区二区第一页免| 国产91久久精品一区二区| 亚洲国产一区在线| 国产精品无码AV一区二区三区| 日本一区二区在线不卡| 国产伦精品一区二区三区免费下载 | 日韩在线视频一区| 无码日本电影一区二区网站| 国产美女一区二区三区| 一本大道在线无码一区| 亚洲影视一区二区| 亚洲av无码一区二区三区在线播放| 一区高清大胆人体| 精品无人区一区二区三区在线| 无码人妻品一区二区三区精99 | 久久精品日韩一区国产二区| 最新欧美精品一区二区三区| 精品福利一区二区三区免费视频 | 精品人妻中文av一区二区三区| 亚洲国产日韩一区高清在线 | 亚洲一区二区免费视频| 精品一区高潮喷吹在线播放| 日本视频一区在线观看免费 | 国产人妖视频一区二区 | 日韩精品一区二区三区国语自制 | 无码av免费一区二区三区| 色婷婷综合久久久久中文一区二区|