1. 程式人生 > >JavaScript 表單指令碼

JavaScript 表單指令碼

理解表單

JavaScript最初的一個應用,就是分擔伺服器處理表單的責任,打破處處依賴伺服器的局面,現在表單已經成為開發Web程式必不可少的一部分了,可是我們又對它瞭解多少啦,下面一起來了解一下表單;

表單的基礎知識

在HTML中,表單是由<form>元素來表示額,而在JavaScript中,表單對應的則是HTMLForm-Element型別。HTMLFormElement繼承了HTMLElement,因而與其他HTML元素具有相同的預設屬性。不過,HTMLFormElement也有它自己的屬性和方法;

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屬性。

取得<form>元素的方式有好幾種,通常用的最多的是把裡面的元素當成dom,為其新增ID屬性,通過id來定位。

還可以通過document,forms來獲取頁面中所有的表單。然後通過數值索引或name值來取得特定的表單。

var firstForm=document.forms[0]; //取得頁面中的第一個表單
var myForm=document,forms["form2"];//取得頁面中名稱為"form2"的表單
提交表單

使用者點選按鈕或影象按鈕時,就會提交表單;使用<input>或<button>都可以定義提交按鈕,只要將其type特性的值設定為"submit"即可。當然也可以通過自定義函式來提交表單;

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
 </head>
 <body>
	<form method="post" id="form1" action="#">
		請輸入賬號<input type="text"></input><br>
		請輸入密碼<input type="password"></input><br>
		<input type="submit"></input>
	</form>
 </body>
</html>
以上是普通的表單提交,當然可以可以使用事件繫結提交的方式
<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
 </head>
 <body>
	<form method="post" id="form1" action="#">
		請輸入賬號<input type="text"></input><br>
		請輸入密碼<input type="password"></input><br>
		<input type="button" value="提交" onclick="submit()"></input>
	</form>
 </body>
 <script>
		function submit(){
			var form=document.getElementById("form1");
			form.submit();
		}
 </script>
</html>
以函式事件提交的方式,使得我們可以在瀏覽器傳送請求給伺服器之前觸發submit,這樣我們就有事件來驗證表單資料,並決定最終是否要提交表單;


重置表單:

在使用者單擊重置按鈕時,表單會被重置。使用type特性值為"reset"的<input>或<button>可以建立重置按鈕

<button type="reset" >重置</button>
<input type="reset" value="重置"></input>

表單欄位

可以把表單裡面的欄位當成DOM的形式來訪問和處理。另外,每個表單都有elements屬性,該屬性是表單中所有元素的集合。這個elements集合是一個有序列表,其中包含著表單中的所有欄位,例如<input>,<textarea>.<button>和<fieldset>。每個表單欄位在elements集合中的順序,與它們出現在標記中的屬性一致,可以按照位置和name的特性來訪問它們。

var form=document.getElementById("form1"); //獲取form
		var field1=form.elements[0];//獲取表單中的第一個欄位
		alert(field1.value);
		//獲取名字loginNo的欄位
		var field2=form.elements['loginNo'];
		alert(field2);
		var fieldCount=form.elements.length; //獲取表單中包含的欄位的數量

共有的表單欄位屬性

disabled:布林值,表示當前欄位是否被禁用。

form:指向當前欄位所屬表單的指標;只讀。

name:當前欄位的名稱。

readOnly:布林值,表示當前欄位是否只讀。

tabIndex:表示當前欄位的切換(tab)序號。

type:當前欄位的型別,如"checkbox","radion",等等。

value:當前欄位提交給伺服器的值。對檔案欄位來說,這個屬性是隻讀的,包含著檔案在計算機的路徑。

共有的表單欄位方法

每個表單的欄位都有兩個方法:focus()和blur()。其中,focus()方法用於將瀏覽器的焦點設定到表單欄位,即啟用表單欄位,使其可以響應鍵盤事件。

HTML5還為表達新增了一個autofocus屬性,在支援這個屬性的瀏覽器中,只要設定這個屬性,不用JavaScript就能自動把焦點移動到對應欄位;

請輸入賬號<input type="text" name="loginNo" autofocus></input><br>