成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

form表單那點(diǎn)事兒(下) 進(jìn)階篇

jerryloveemily / 3506人閱讀

摘要:在表單提交時(shí),瀏覽器會(huì)自動(dòng)進(jìn)行一系列的校驗(yàn)工作,沒有通過校驗(yàn)的表單是無法提交到服務(wù)器的。而方法提交表單,會(huì)在請(qǐng)求中發(fā)送表單字段鍵值對(duì)。表單提交事件表單提交到服務(wù)器時(shí),會(huì)觸發(fā)事件。

上一篇主要溫習(xí)了一下form表單的屬性和表單元素,這一片主要講解用JavaScript如何操作form。

表單操作 取值

用JavaScript操作表單,免不了會(huì)有取值賦值操作,比如有以下表單:

  

用JavaScript獲取表單的屬性值,或者表單字段的值,可以直接通過 elem.name 的方式

alert(form1.action); => "/login"
alert(form1.method); => "post"
alert(form1.user_name.value) => ""

而要獲取表單中的字段,則通過:

// 屬于本表單元素nodelist類數(shù)組,如果通過form屬性指定到其他表單,不會(huì)算作本表單元素,下面獲取到的元素是field 0,field 1,field 2,field 5
console.log(form1.elements);  => [...,...,...] 

// 屬于本表單元素個(gè)數(shù),如果通過form屬性指定到其他表單,不會(huì)算作本表單元素
console.log(form1.length);  => 4 

// nodelist中下標(biāo)為2的表單元素
console.log(form1[1]);  => 

// 表單中 name="user_name" 的元素,有同名的字段則返回一個(gè)nodelst類數(shù)組
console.log(form1["user_name"]);  =>  或 nodelist

// 獲取表單全部?jī)?nèi)容,詳情見下面的 “提交” 條目
jQuery("#form1").serialize(); => user_name=&user_email=&user_phone=13333333331
jQuery("#form1").serializeArray(); => [] 一個(gè)數(shù)組,里面是每個(gè)字段的鍵值對(duì)
new FormData(form1) => 沒有返回值
賦值

表單本身的屬性可以通過JavaScript賦值,比如 action , method , target 等。例如

// 把表單提交到 "/signIn"
form1.action = "/signIn";

// 修改表單提交方式為 "GET"
form1.method = "GET";

而給表單元素賦值,則是通過 elem.value 的方式,例如

// 將user_name的值設(shè)定為 "hello world"
form1.user_name.value = "hello world"; 

// 選中select中值為2的option
form1.user_phone.value = 2; 
重置

可以通過html或者JavaScript的方式把表單值重置為頁面初始的樣子。
html方式為點(diǎn)擊 type="reset"inputbutton。JavaScript的方式為 form1.reset()
如果表單中應(yīng)用了第三方UI庫如 select2 ,重置后還需要手動(dòng)觸發(fā)表單元素的change事件,以觸發(fā)第三方庫更新UI。常用的方式是:

form1.reset();
$(form1.user_phone).change();
校驗(yàn) 傳統(tǒng)校驗(yàn)

傳統(tǒng)的表單校驗(yàn)方式是通過監(jiān)聽的 submit 事件或是表單字段的 input , focus , blur , change 事件,去觸發(fā)JavaScript中指定的校驗(yàn)規(guī)則,來確定表單是提交還是拒絕提交。

html5校驗(yàn)

步入html5時(shí)代之后,可以僅通過html本身完成表單提交前的校驗(yàn)工作。方式是給表單字段加上 requiredpattern 屬性,required 是告訴瀏覽器這個(gè)字段需要校驗(yàn),而 pattern 則指定一個(gè)正則表達(dá)式形式的校驗(yàn)規(guī)則。在表單提交時(shí),瀏覽器會(huì)自動(dòng)進(jìn)行一系列的校驗(yàn)工作,沒有通過校驗(yàn)的表單是無法提交到服務(wù)器的。
想要手動(dòng)檢查整個(gè)表單是否通過了校驗(yàn)規(guī)則,可以通過 form.checkValidity() 方法,它會(huì)返回一個(gè)布爾值。

比較知名的表單校驗(yàn)插件是 jquery-validation 。

提交 提交規(guī)則

提交表單時(shí),表單擁有的字段會(huì)按照method中的指定方式提交給服務(wù)器,而表單提交的字段規(guī)則是:

表單元素 type
規(guī)則

button
永遠(yuǎn)不提交
checkbox 只在勾選后提交
file 永遠(yuǎn)提交,即使為空值
hidden 永遠(yuǎn)提交,即使為空值
image 永遠(yuǎn)提交,即使為空值
password 永遠(yuǎn)提交,即使為空值
radio 只在勾選后提交,如果一組Radio沒有任何勾選,全部不提交。
reset 永遠(yuǎn)不提交
submit 點(diǎn)擊哪個(gè)按鈕,則提交這個(gè)按鈕的值,其他的SUBMIT按鈕值都不提交。
如果表單的提交行為是由JavaScript腳本觸發(fā)的,則不提交任何值。
text 永遠(yuǎn)提交,即使為空值
button
永遠(yuǎn)不提交
reset 永遠(yuǎn)不提交
submit 點(diǎn)擊哪個(gè)按鈕提交表單,則提交這個(gè)按鈕的值。
如果省略TYPE,IE默認(rèn)為BUTTON,火狐默認(rèn)SUBMIT。
-
永遠(yuǎn)提交,即使為空值。