1. 程式人生 > >表單事件——表單基礎知識

表單事件——表單基礎知識

文章目錄


一、概述

1.1 表單的私有屬性和方法

屬性或方法 描述
acceptCharset 伺服器能夠處理的字符集;等價於 HTML 中的 accept-charset 特性。
action 接受請求的 URL;等價於 HTML 中的 action 特性。
elements 表單中所有控制元件的集合(HTMLCollection) 。
enctype 請求的編碼型別;等價於 HTML 中的 enctype 特性。
length 表單中控制元件的數量。
method 要傳送的 HTTP 請求型別,通常是"get"或"post";等價於 HTML 的 method 特性。
name 表單的名稱;等價於 HTML 的 name 特性。
reset() 將所有表單域重置為預設值。
submit() 提交表單。
target 用於傳送請求和接收響應的視窗名稱;等價於 HTML 的 target 特性。

1.2 獲取表單的三種方式

  • 通過id獲取。如var form = document.getElementById(“form1”);
  • 通過 document.forms 可以取得頁面中所有的表單。如
    var firstForm = document.forms[0];//取得頁面中的第一個表單
    var myForm = document.forms[“form2”];//取得頁面中名稱為"form2"的表單
  • 通過名字訪問,這個方法不推薦。如,,通過 document.form2 可以訪問到名為"form2"的表單。

二、提交表單

提交表單有三種方式:

  • 將<input>的type設為submit
  • 將<button>的type設為submit
  • 將<input>的type設為image

例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表單提交</title>
</head>
<body>
<form action="" id="myForm">
  <!-- 通用提交按鈕 -->
  <input type="submit" value="Submit Form">
  <!-- 自定義提交按鈕 -->
  <button type="submit">Submit Form</button>
  <!-- 影象按鈕 -->
  <input type="image" src="icon.png">

</form>
<script type="text/javascript">
  var form = document.getElementById("myForm");

  form.addEventListener('submit',function (event) {
    alert("點選了提交按鈕!!!");
    //阻止提交哦啊事件
    event.preventDefault();
  })
</script>

</body>
</html>

執行結果:
在這裡插入圖片描述

javascript還可以程式設計進行表單提交,但是不會觸發submit事件。如:

var form = document.getElementById("myForm");
//提交表單
form.submit();

表單提交最大的問題就是重複提交。對策就是在第一次提交之後,在事件處理程式中禁用提交按鈕或在事件處理程式中取消後續提交


三、重置表單

重置表單時,會把表單欄位重置為頁面剛載入完的初始值。重置表單有兩種方式:

  • 將<input>的type設為reset
  • 將<button>的type設為reset

需要注意的時,與表單提交不同,用程式設計方式重置表單是會出發reset事件的。

例子:

<!DOCTYPE html>
<head>
  <meta charset="UTF-8">
  <title>表單提交</title>
</head>
<body>
<form action="" id="myForm">
  <input type="text" value="初始值為text">
  <input type="radio" name="danxuankuang"></input>
  <input type="radio" value="" name="danxuankuang" checked></input>

  <input type="reset"> 重置</input>
  <button type="reset">重置</button>
</form>
</body>
</html>

效果:
在這裡插入圖片描述

三、表單欄位

4.1 表單的elements屬性

每個表單物件都有elements 屬性,該屬性是表單中所有表單元素(欄位)的集合。例子:

var form = document.getElementById("form1");
//取得表單中的第一個欄位
var field1 = form.elements[0];
//取得名為"textbox1"的欄位
var field2 = form.elements["textbox1"];
//取得表單中包含的欄位的數量
var fieldCount = form.elements.length;

4.2 表單欄位的共有屬性

共有屬性 描述
disabled 布林值,表示當前欄位是否被禁用。
form 指向當前欄位所屬表單的指標;只讀。
name 當前欄位的名稱。
readOnly 布林值,表示當前欄位是否只讀。
tabIndex 表示當前欄位的切換(tab)序號。
type 當前欄位的型別,如"checkbox"、“radio”,等等。
value 當前欄位將被提交給伺服器的值。對檔案欄位來說,這個屬性是隻讀的,包含著檔案在計算機中的路徑。

這裡我們舉一個避免重複提交的例子:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>表單提交</title>
</head>
<body>
<form action="" id="myForm">
  <input type="text" name="first_input" value="初始值為text">
  <input type="text" id="second_input">
  <input type="radio" name="danxuankuang"></input>
  <input type="radio" value="女" name="danxuankuang" checked></input>

  <input type="reset">
  <input type="submit" name="sb" >
</form>
<script type="text/javascript">
  var form=document.getElementById("myForm");
  form.addEventListener("submit",function () {
    alert("點選了提交按鈕");
    var sb=form.elements["sb"];
    sb.disabled=true;//提交成功後,會自動還原
    sb.style.backgroundColor="red";
    //event.preventDefault();
    //這裡寫提交
  })
</script>
</body>
</html>

4.3 表單欄位的共有方法

  • focus():表單欄位獲取焦點。HTML5 為表單欄位新增了一個 autofocus 屬性。在支援這個屬性的瀏覽器中,只要設定這個屬性,
    不用 JavaScript 就能自動把焦點移動到相應欄位。
  • blur():表單欄位失去焦點

4.4 表單欄位的共有事件

  • blur:當前欄位失去焦點時觸發。
  • change:對於 和 元素,在它們失去焦點且 value 值改變時觸發;對於元素,在其選項改變時觸發。
  • focus:當前欄位獲得焦點時觸發。