整合營銷服務(wù)商

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

          免費(fèi)咨詢熱線:

          表單對(duì)象的提交與反饋

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

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

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

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

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

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

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

          1 表單對(duì)象的提交與反饋

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

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

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

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

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

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

          Dim ie, dmt, fm

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

          With ie

          .Visible = True '顯示它

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

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

          DoEvents

          Loop

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

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

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

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

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

          End With

          End Sub

          代碼截圖:

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

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

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

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

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

          Sub MYNZC()

          Sheets("Sheet1").Select

          Cells.Clear

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

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

          With ie

          '.Visible = True '顯示它

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

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

          DoEvents

          Loop

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

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

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

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

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

          Next

          Next

          End With

          End Sub

          代碼截圖:

          返回的結(jié)果:

          4 圖片images對(duì)象地址的獲取

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

          Sub MYNZD()

          Dim ie, dmt

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

          With ie

          .Visible = True '顯示它

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

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

          DoEvents

          Loop

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

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

          End With

          End Sub

          代碼截圖:

          5 Anchor 對(duì)象

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

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

          本節(jié)知識(shí)點(diǎn)回向:

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

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

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


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

          一篇文章我們說了單選框、多選框以及下拉框的使用,今天呢我們繼續(xù)看一下表單剩下的常用控件:提交按鈕以及重置按鈕。

          (1)提交按鈕

          提交按鈕,顧名思義就是當(dāng)我們填好了表單中的數(shù)據(jù)之后,我們需要通過提交按鈕來將數(shù)據(jù)傳遞到后臺(tái)的服務(wù)器中,供后臺(tái)程序使用。

          使用語法:<input type="submit" value="提交數(shù)據(jù)">

          詳細(xì)講解:

          1、type:只有當(dāng)type值設(shè)置為submit時(shí),按鈕才有提交作用,才能正常的進(jìn)行表單的提交。(或者使用JavaScript代碼來觸發(fā)提交事件,這個(gè)到后期我們講解js的時(shí)候我進(jìn)行介紹)

          2、value:按鈕上顯示的文字,顯示按鈕的名稱。

          (2)重置按鈕

          當(dāng)用戶需要重置表單信息到初始時(shí)的狀態(tài)時(shí),比如用戶輸入“用戶名”后,發(fā)現(xiàn)書寫有誤,可以使用重置按鈕使輸入框恢復(fù)到初始狀態(tài)。只需要把type設(shè)置為"reset"就可以。

          使用語法:<input type="reset" value="重置數(shù)據(jù)">

          詳細(xì)講解:

          1、type:只有當(dāng)type值設(shè)置為reset時(shí),按鈕才有重置作用,點(diǎn)擊按鈕會(huì)將form表單內(nèi)的所有信息還原到初始未輸入的狀態(tài)。

          2、value:按鈕上顯示的文字,顯示重置按鈕的名稱

          使用練習(xí):

          我們創(chuàng)建一個(gè)表單,數(shù)據(jù)我們以post的形式提交到百度首頁,表單里邊有姓名和年齡的輸入框,并且添加提交數(shù)據(jù)按鈕以及重置數(shù)據(jù)按鈕。具體代碼如下圖所示:

          在網(wǎng)頁中的顯示效果就如下圖所示:

          我們?cè)谛彰湍挲g輸入框中輸入內(nèi)容,點(diǎn)擊重置數(shù)據(jù)既可以清空里邊的內(nèi)容,還原到初始狀態(tài),點(diǎn)擊提交數(shù)據(jù)按鈕,那么數(shù)據(jù)將會(huì)提交到我們的指定鏈接處。


          以上呢就是表單最常用的一些控件了,接下來我們對(duì)學(xué)到的表單知識(shí)進(jìn)行一次綜合的測(cè)試,我們來寫一個(gè)完整的表單包含我們學(xué)到的所有知識(shí)。

          我們?cè)谶@里就寫一個(gè)網(wǎng)站制作常用的留言表,表格名稱就叫留言表,然后表中包含有姓名輸入框、性別單選框(默認(rèn)選中男)、愛好多選框(默認(rèn)選中第一個(gè))、所在地區(qū)下拉框、留言內(nèi)容多行文本框,以及提交信息按鈕和重置信息按鈕。數(shù)據(jù)提交呢我們還是提交到百度,提交類型我們使用post。具體的代碼如下圖所示:

          在網(wǎng)頁中的顯示效果就如下圖所示:

          好了,到了這里我們的第一個(gè)表單就算是做完了,到這有人就會(huì)問了,為什么別人的代碼在瀏覽器上看起來都是那么的規(guī)整,我這么寫完看著怎么這么丑,接下來的文章我們將為大家介紹css的知識(shí)了,學(xué)習(xí)了css你也可以將你的頁面做的高達(dá)上起來。最后大家看完一定要自己動(dòng)手寫一寫,只有自己寫出的代碼才能體會(huì)到其中的樂趣,多加練習(xí)才是王道。


          每日金句:人生最大的喜悅是每個(gè)人都說你做不到,你卻完成它了!喜歡我的文章的小伙伴記得關(guān)注一下哦,每天將為你更新最新知識(shí)。

          、使用場(chǎng)景:

          安全性都一樣,都是發(fā)送的http協(xié)議。安全性與提交文件的業(yè)務(wù)處理(格式檢測(cè),防注入)有關(guān),與提交方式無關(guān)。

          一般登錄用表單提交,點(diǎn)擊提交觸發(fā)submit事件,一般會(huì) 使頁面發(fā)生跳轉(zhuǎn),頁面的跳轉(zhuǎn)等行為的控制往往在后端,后端控制頁面的跳轉(zhuǎn)及數(shù)據(jù)的傳遞;但是某些時(shí)候不希望頁面跳轉(zhuǎn),或者說想要將控制權(quán)放在前端,通過js來操作頁面的跳轉(zhuǎn)或數(shù)據(jù)變化,一般這種異步操作,都會(huì)使用ajax。

          但是Ajax會(huì)有個(gè)隱藏的問題,即瀏覽器不保存密碼,不符合用戶習(xí)慣。理想的方式:建立隱藏的iframe,把form標(biāo)簽的target指向iframe,然后檢測(cè)iframe的狀態(tài)。

          2、比較:

          (1)ajax在提交、請(qǐng)求、接收時(shí),都是異步進(jìn)行,網(wǎng)頁不需要刷新,只刷新頁面局部,不關(guān)心也不影響頁面其他部分的內(nèi)容。

          Form提交則是新建一個(gè)頁面,哪怕是提交給自己本身的頁面,也需要刷新,為了維持頁面用戶對(duì)表單的狀態(tài)改變,要在控制器和模板之間傳遞更多參數(shù)以保持頁面狀態(tài)。

          (2)ajax提交時(shí),是在后臺(tái)新建一個(gè)請(qǐng)求。

          Form卻是放棄本頁面,然后再請(qǐng)求。

          (3)ajax必須要用js來實(shí)現(xiàn),存在調(diào)試麻煩、瀏覽器兼容問題,而且不啟用js的瀏覽器,無法完成操作。

          Form表單是瀏覽器自帶的,無論是否開啟js,都可以提交表單。

          (4)ajax在提交、請(qǐng)求、接收時(shí),整個(gè)過程都需要使用程序來對(duì)其進(jìn)行數(shù)據(jù)處理。

          Form表單提交,是根據(jù)表單結(jié)構(gòu)自動(dòng)完成,不需要代碼干預(yù)。用submit提交。

          3、其他方面:

          關(guān)于輸入內(nèi)容的校驗(yàn),ajax可以在獲取到元素內(nèi)容用程序判斷;form表單的屬性中有校驗(yàn)的字段,easyui,jeecg等中都封裝,用戶只需添加正則表達(dá)式的校驗(yàn)規(guī)則。

          4、例:

          (1)使用form提交

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

          <html>

          <head>

          <title>login test</title>

          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

          </head>

          <body>

          <div id="form-div">

          <form id="form1" action="/users/login" method="post">

          <p>用戶名:<input name="userName" type="text" id="txtUserName" tabindex="1" size="15" value=""/></p>

          <p>密 碼:<input name="password" type="password" id="TextBox2" tabindex="2" size="16" value=""/></p>

          <p><input type="submit" value="登錄">&nbsp<input type="reset" value="重置"></p>

          </form>

          </div>

          </body>

          </html>


          主站蜘蛛池模板: 国产成人精品一区二区三区无码| 国产一区二区在线|播放| 台湾无码AV一区二区三区| 久久国产精品无码一区二区三区| 在线播放偷拍一区精品| 一区二区三区四区在线观看视频| 亚洲日韩AV一区二区三区四区| 亚洲人AV永久一区二区三区久久| 老熟妇高潮一区二区三区| 亚洲福利视频一区| 国产亚洲无线码一区二区| 免费国产在线精品一区| 国产麻豆精品一区二区三区| 国产精品香蕉在线一区| 香蕉久久一区二区不卡无毒影院 | 亚洲AV无码国产精品永久一区| 国产午夜精品一区二区三区嫩草| 国产一区二区三区无码免费| 糖心vlog精品一区二区三区| 国产手机精品一区二区| 国内自拍视频一区二区三区| 一区二区精品在线| 少妇精品久久久一区二区三区| 久久久久99人妻一区二区三区| 香蕉视频一区二区| 亚洲成av人片一区二区三区| 一区视频在线播放| 亚洲Aⅴ无码一区二区二三区软件| 日韩一区二区三区不卡视频| 狠狠做深爱婷婷久久综合一区| 日美欧韩一区二去三区| 国产精品亚洲综合一区在线观看| 精品国产日韩一区三区| 国产一区二区三区四| 视频一区视频二区日韩专区| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 日本一道高清一区二区三区| 无码日韩人妻av一区免费| 午夜DV内射一区区| 精品亚洲一区二区三区在线播放| 久久AAAA片一区二区|