HTMLFormElement繼承了HTMLElement,它自己獨特的屬性和方法有:
- acceptCharset:伺服器能夠處理的字元集,等價於HTML的accept-charset特性
- action:接收請求的URL,等價於HTML中的action特性。
- elements:表單中所有控制項的集合(HTMLCollection)
- enctype:請求的編碼類型
- length:表單中控制項的數量
- method:要傳送的HTTP請求類型,通常是get或post
- 名稱:表單的名稱
- reset():將所有表單域重設為預設值
- submit():投稿表單
- target:用於發送請求和接收回應的視窗名稱;
取得form元素的參考可以是getElementById、也可以是document.forms中數值索引或name值;
一、投稿表單
提交表單的按鈕有三種:
<input type="submit" value="Submit Form"> <button type="submint">Submit Form</button> <input type="image" src="">
以上面這種方法提交表單會在瀏覽器請求發送給伺服器之前觸發submit事件,這樣就可以驗證表單資料和決定是否允許提交表單,如下面的程式碼就可以阻止表單的提交:
var form = document.getElementById("myForm"); form.addEventListener("submit", function () { event.preventDefault(); });
另外也可以透過js腳本呼叫submit()方法提交表單,在呼叫submit()提交表單不會觸發submit事件。
var form = document.getElementById("myForm"); form.submit();
第一次提交表單後如果長時間沒有回應,用戶會變得不耐煩,往往多次點擊提交按鈕,導致重複提交表單,因此應該在第一次提交表單後就禁用提交按鈕或利用onsubmit事件阻止後續操作。
var submitBtn = document.getElementById("submitBtn"); submitBtn.onclick = function () { //处理表格和提交等等 submitBtn.disabled = true; };
二、重設表單
重置表單應該使用input或button:
<input type="reset" value = "Reset Form"> <button type="reset">Reset Form</button>
當使用者點選重設按鈕重設表單時,會觸發reset事件,必要的時候可以取消重設動作:
var resetBtn = document.getElementById("resetBtn"); resetBtn.addEventListener("reset", function () { event.preventDefault(); });
另外也可以透過js腳本呼叫reset()方法重置表單,在呼叫reset()方法重置表單時會觸發reset事件。
var form = document.getElementById("myForm"); form.reset();
三、表單欄位
每個表單都有一個elements屬性,該屬性是表單中所有表單(欄位)的集合:
var form = document.forms["myForm"]; var list = []; //取得表单中第一个字段 var firstName = form.elements[0]; list.push(firstName.name); //取得表单中名为lastName的字段 var lastName = form.elements["lastName"]; list.push(lastName.name); // 取得表单中包含的字段的数量 var fieldCount = form.elements.length; list.push(fieldCount); console.log(list.toString()); //firstName,lastName,4
多個表單控制項使用name(單選按鈕),那麼會傳回以該name命名的NodeList:
<form id="myForm" name="myForm"> <ul> <li><input type="radio" name="color" value="red">red</li> <li><input type="radio" name="color" value="yellow">yellow</li> <li><input type="radio" name="color" value="blue">blue</li> </ul> <button type="submint">Submit Form</button> <button type="reset">Reset Form</button> </form>
name都是color,在存取elements["color"]時,回傳NodeList:
var list = []; var form = document.forms["myForm"]; var radios = form.elements["color"]; console.log(radios.length) //3
共有的表單欄位屬性
- disabled: 布林值,表示目前欄位是否已停用;
- form: 指向目前欄位所屬表單的指標:唯讀;
- name: 目前欄位的名稱;
- readOnly: 布林值,表示目前欄位是否唯讀;
- tabIndex: 表示目前欄位的切換(tab)序號;
- type: 目前欄位的型別;
- value: 目前欄位被提交給伺服器的值。對檔案欄位來說,這個屬性是唯讀的,包含著檔案在電腦中的路徑;
可透過submit事件在提交表單後停用提交按鈕,但不可以用onclick事件,因為onclick在不同瀏覽器中有「時差」;
共有表單欄位方法
- focus(): 啟動字段,使其可以回應鍵盤事件;
-
blur(): 失去焦點,觸發;使用的場合不多;
可以在偵聽頁面的load事件上加入該focus()方法:
window.addEventListener("load", function () { document.forms["myForm"].elements["lastName"].focus(); });
需要注意,第一个表单字段是input,如果其type特性为“hidden”,或者css属性的display和visibility属性隐藏了该字段,就会导致错误。
在HTML5中,表单中新增加了autofocus属性,自动把焦点移动到相应字段。
autofocus
如:
<input type="text" name="lastName" autofocus>
或者检测是否设置了该属性,没有的话再调用focus()方法:
window.addEventListener("load", function () { var form = document.forms["myForm"]; if (form["lastName"].autofocus !== true) { form["lastName"].focus(); }; });
共有的表单字段事件
除了支持鼠标键盘更改和HTML事件之外,所有的表单字段都支持下列3个事件:
blur: 当前字段失去焦点时触发;
change:input元素和textarea元素,在它们失去焦点且value值改变时触发;select元素在其选项改变时触发(不失去焦点也会触发);
focus:当前字段获得焦点时触发;
如:
var form = document.forms["myForm"]; var firstName = form.elements["firstName"]; firstName.addEventListener("focus", handler); firstName.addEventListener("blur", handler); firstName.addEventListener("change", handler); function handler() { switch (event.type) { case "focus": if (firstName.style.backgroundColor !== "red") { firstName.style.backgroundColor = "yellow"; }; break; case "blur": if (event.target.value.length < 1) { firstName.style.backgroundColor = "red"; } else { firstName.style.backgroundColor = ""; }; break; case "change": if (event.target.value.length < 1) { firstName.style.backgroundColor = "red"; } else { firstName.style.backgroundColor = ""; }; break; } }
以上就是本文的全部内容,希望对大家的学习有所帮助。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

禪工作室 13.0.1
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Dreamweaver CS6
視覺化網頁開發工具