表單字段又叫表單元素,表示表單所包含控件,如<input>、<select>等。本文將詳細介紹表單字段的內容javascript
每一個表單都有elements屬性,該屬性是表單中全部元素的集合。這個elements集合是一個有序列表,其中包含着表單中的全部字段,如<input>、<textarea>、<button>和<fieldset>html
[注意]不包括圖片按鈕<input type="image">java
每一個表單字段在elements集合中的順序,與它們出如今標記中的順序相同,能夠按照位置和name特性來訪問它們瀏覽器
<form action="#"> <input type="text" name="a"> <textarea name="b"></textarea> <button name="c"></button> <fieldset name="d"></fieldset> </form> <script> var elements = document.forms[0].elements; //[input, textarea, button, fieldset, a: input, b: textarea, c: button, d: fieldset] console.log(elements); //<input type="text" name="a"> console.log(elements.a); //<textarea name="b"></textarea> console.log(elements[1]) console.log(elements[3] === elements.d)//true </script>
【form[name]】服務器
除了使用elements元素集合外,還能夠使用form[name]來獲取表單內的元素控件this
<form name="form" id="myForm"> <input type="text" id="a1" name="a" > </form> <script> var myInput1 = myForm.a; console.log(myInput1.id);//'a1' </script>
除了<fieldset>元素以外,全部表單字段都擁有相同的一組屬性spa
disabled 布爾值,表示當前字段是否被禁用
form 指向當前字段所屬表單的指針;只讀
name 當前字段的名稱
readOnly 布爾值,表示當前字段是否只讀
tabIndex 表示當前字段的切換(tab)序號
type 當前字段的類型,如"checkbox"、"radio"等等
value 當前字段將被提交給服務器的值
defaultValue 表示該表單元素的初始值
除了form屬性以外,能夠經過javascript動態修改其餘任何屬性指針
<form action="#"> <input value="123"> </form> <script> var input = document.forms[0].elements[0]; console.log(input.disabled);//false console.log(input.form);//<form action="#"></form> console.log(input.name);//'' console.log(input.readOnly);//false console.log(input.tabIndex);//0 console.log(input.type);//text console.log(input.value);//123 console.log(input.defaultValue);//123 </script>
<form action="#"> <input value="123"> </form> <button id="btn1">禁用(啓用)</button> <button id="btn2">只讀(讀寫)</button> <script> var input = document.forms[0].elements[0]; btn1.onclick = function(){ input.disabled = !input.disabled; } btn2.onclick = function(){ input.readOnly = !input.readOnly; } </script>
每一個表單字段都有兩個方法:focus()和blur()code
focus()orm
focus()方法用於將瀏覽器的焦點設置到表單字段,即激活表單字段,使其能夠響應鍵盤事件
[注意]非表單元素設置tabIndex=-1,並設置focus()方法後,也能夠得到焦點
blur()
與focus()方法相對的是blur()方法,它的做用是從元素中移走焦點。在調用blur()方法時,並不會把焦點轉移到某個特定的元素上;僅僅是將焦點從調用這個方法的元素上面移走而已
<input id="test" type="text" value="123"> <button id="btn1">input元素得到焦點</button> <button id="btn2">input元素失去焦點</button> <script> btn1.onclick = function(){test.focus();} btn2.onclick = function(){test.blur();} </script>
除了支持鼠標、鍵盤、更改和HTML事件以外,全部表單字段都支持下列3個事件
focus
當前字段得到焦點時觸發
blur
當前字段失去焦點時觸發
change
對於<input>和<textarea>元素,在它們失去焦點且value值改變時觸發;對於<select>元素,在其選項改變時觸發
固然,也支持focusin和focusout事件,在焦點管理中已經作了詳細介紹,就再也不重複
<input id="test" type="text" value="123"> <script> test.onchange = function(){ this.style.backgroundColor = 'pink'; } </script>
順序
當一個input元素的值改變而且失去焦點時,blur和change事件的順序是怎麼樣的呢?
全部的瀏覽器的觸發順序都是先change事件,再blur事件
<input id="test" type="text" value="123"> <script> test.onblur=test.onchange = function(e){ e = e || event; this.value += e.type + ';'; } </script>