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>