JavaScript學習14:表單處理
什麼是表單?
在HTML中,表單是由<form>元素來表示的,而在JavaScript中,表單對應的則是HTMLFormElement型別。HTMLFormElement繼承了HTMLElement,因此它擁有HTML元素的預設屬性,並且還獨有自己的屬性和方法。
獲取表單<form>物件的方法有很多種,比如:document.getElementById(“表單標籤ID”)、document.getElementsByTagName(‘標籤名稱’)等等。
提交表單
獲取了頁面表單物件,就要考慮如何將表單資料提交給後臺了。通常的方式是使用submit事件,他的預設行為就是攜帶資料跳轉到指定的頁面。我們可以通過事件物件,來阻止submit的預設行為。同時也可以使用submit()方法來自定義觸發submit事件,也就是說並不一定要點選submit按鈕才能進行提交操作。
提交資料最大的問題就是重複提交表單。因為各種原因,當一條資料提交到伺服器的時候會出現延遲等長時間沒有響應的情況,導致使用者不停的進行提交操作,從而使得重複提交了很多相同的請求,或者造成錯誤,或者這寫入多條相同的資訊,而這都不是我們想看到的。
解決辦法,簡單來說有兩個:第一就是提交之後,立刻禁用點選按鈕;第二種就是提交之後,進行判斷,若已提交過,則取消後續的表單提交提交操作。
瞭解了上面的基礎知識,我們來看兩種常用的表單元素:文字框和選擇框。
文字框指令碼
在HTML中,有兩種方式來表現文字框:一種是單行文字框<input type=”text”>,一種是多行文字框<textarea>。雖然<input>在字面上有value值,<textarea>沒有,但是我們都可以通過value獲取他們的值。至於其他的屬性和方法不再贅述,下面看一個比較有意思的東西,過濾輸入。
為了使文字框輸入指定的字元,我們必須要對輸入的字元進行驗證。有一種做法是判斷字元是否合法,這是提交後操作的。那麼我們也可以在提交前限制某些字元,這就是過濾輸入。看下代的簡單實現:
<span style="font-size:18px;">//遮蔽非數字鍵的輸入
addEvent(textField,'keypress',function(evt){
var e=evt||window.event;
var charCode=getCharCode(evt);
if(!/\d/.test(String.fromCharCode(charCode))&&charCode>8){
preDet(evt);
}
});</span>
選擇框指令碼
選擇框是通過<select>和<option>元素建立的,除了通用的一些屬性和方法外,HTMLSelectElement型別還提供瞭如下的屬性和方法:
在DOM中,每個<option>元素都有一個HTMLOptionElement物件,以便訪問資料,這個物件有如下一些屬性:
選擇框有單選和多選之分,對於單選來說,使用selectedIndex屬性最為簡單。而對於多選的需求,則使用selected屬性更為簡單一些。這是判斷是否選中,對於選中的按鈕如何獲取它的值,就要使用checked屬性了。
程式碼示例就不再寫了,因為比較簡單,都是基礎性的,大家有興趣實踐的可以寫寫程式碼實現一下單選和多選的功能。
小結一下:
JS的表單處理遠遠不止這些,比如表單裡面的表格、頁面的label等等,都是表單的元素,尤其是datagrid控制元件,它和後臺的資料互動比較重要,我們在做各種管理資訊系統的過程中,肯定要大量的使用它,因此還有很多的東西需要我們去了解和深入學習。相關文章
- php表單處理-143PHP
- React 如何來處理表單React
- JavaScript 資料處理 - 對映表篇JavaScript
- 14. 異常處理
- rust學習十、異常處理(錯誤處理)Rust
- JavaScript事件處理JavaScript事件
- 小王的學習筆記(十四)——vue資料渲染、事件處理、表單輸入與繫結筆記Vue事件
- 學習Rust 錯誤處理Rust
- 在 Laravel 中優雅處理 Form 表單LaravelORM
- 《javascript高階程式設計》學習筆記 | 21.2.錯誤處理JavaScript程式設計筆記
- React學習(九):表單React
- CSS學習案例(14):下拉導航選單CSS
- JavaScript 異常處理JavaScript
- JavaScript | 非同步處理JavaScript非同步
- javascript - 資料處理JavaScript
- SparkStreaming實時流處理學習Spark
- PyMuPDF框架學習(pdf文字處理)框架
- JAVA學習之異常處理Java
- js學習之非同步處理JS非同步
- 深度學習--資料預處理深度學習
- React學習筆記-事件處理React筆記事件
- 深度學習(6)——預處理Preprocessing深度學習
- 企業級 SpringBoot 教程 (二十)處理表單提交Spring Boot
- 異常處理 - Go 學習記錄Go
- (轉)機器學習:偏差處理(2)機器學習
- Vue學習筆記之事件處理Vue筆記事件
- 深度學習——資料預處理篇深度學習
- 4、Ktor學習-處理HTTP請求;HTTP
- (1) Pytorch深度學習—數值處理PyTorch深度學習
- Node.js 系列 - 搭建路由 & 處理表單提交Node.js路由
- Django高階表單處理與驗證實戰Django
- 2018自然語言處理與機器學習論文發表統計自然語言處理機器學習
- Python深度學習(處理文字資料)--學習筆記(十二)Python深度學習筆記
- javascript表單驗證JavaScript
- JavaScript 表單驗證JavaScript
- 實戰表單驗證學習
- SpringBoot非官方教程 | 第二十篇: 處理表單提交Spring Boot
- 機器學習一:資料預處理機器學習
- React學習手記3-事件處理React事件