Vue如何獲取表單數(shù)據(jù)
表單用于搜集不同類型的用戶輸入,Vue針對(duì)不同的表單輸入類型,也提供了不同的的輸入控制及驗(yàn)證。
一、獲取表單數(shù)據(jù)
開(kāi)始前的準(zhǔn)備,在目錄下創(chuàng)建文件夾及對(duì)應(yīng)的頁(yè)面如下
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>收集表單數(shù)據(jù)</title> <script src="../js/vue.js" type="text/javascript"></script> </head> <body> <!-- 準(zhǔn)備好一個(gè)容器 --> <div id="root"> </div> <script type="text/javascript"> //Vue.config.productionTip = false //阻止 vue 在啟動(dòng)時(shí)生成生產(chǎn)提示。 // 創(chuàng)建vue實(shí)例 const vm = new Vue({ el:'#root', //函數(shù)式 data:function(){ return{ info:{ name:'摔跤貓子', } }; } }); </script> </body> </html>
1.1 input
默認(rèn)類型的input框通過(guò)前面幾章所介紹的v-model雙向綁定即可
這里再插一個(gè)小技巧,當(dāng)表單的內(nèi)容為左側(cè)標(biāo)題及右側(cè)文本框這樣的布局組成時(shí),如何實(shí)現(xiàn)點(diǎn)擊標(biāo)題光標(biāo)自動(dòng)在右側(cè)的文本框選中呢?
只需要在左側(cè)標(biāo)題的label標(biāo)簽中添加一個(gè)for的同時(shí)指定一個(gè)名稱,同時(shí)在需要選中光標(biāo)的文本框設(shè)置相同的id值即可
<label for="number">學(xué)號(hào):</label> <input type="text" v-model="number" id="number" autocomplete="off" />
1.2 radio
在使用radio標(biāo)簽時(shí),需要給input指定其type為radio的同時(shí)添加一樣的name值,否則無(wú)法達(dá)到多選一的效果
radio標(biāo)簽繼續(xù)使用v-model雙向綁定,但是切換時(shí)data中的sex字段并沒(méi)有數(shù)據(jù),這是因?yàn)閞adio類型下的input沒(méi)有一個(gè)入口用于輸入,必須給它指定默認(rèn)的value值
相同的name值以及value值配置好后,即可實(shí)現(xiàn)效果
性別: 男<input type="radio" v-model="sex" name="sex" value="男" /> 女<input type="radio" v-model="sex" name="sex" value="女" />
1.3 checkbox
使用checkbox時(shí)是不是跟上述一樣的步驟呢?畢竟用的都是input標(biāo)簽,只不過(guò)修改了其type值而已。
年級(jí): 一年級(jí)<input type="checkbox" value="一年級(jí)" v-model="grade" /> 二年級(jí)<input type="checkbox" value="二年級(jí)" v-model="grade" /> 三年級(jí)<input type="checkbox" value="三年級(jí)" v-model="grade" />
夢(mèng)想是美好的,現(xiàn)實(shí)是殘酷的,checkbox標(biāo)簽的表現(xiàn)讓我們大失所望,不僅獲取到的數(shù)據(jù)類型不對(duì),而且不管是點(diǎn)擊三個(gè)中的哪一個(gè),他都是一起選中,一起取消,仿佛一個(gè)共同體
這是因?yàn)樵赿ata中年級(jí)字段的定義使用的字符類型,這里需要改成數(shù)組類型的字段屬性,效果就達(dá)成了
1.4 select
當(dāng)使用select標(biāo)簽時(shí),保持v-model標(biāo)簽即可
班級(jí): <select v-model="className"> <option>請(qǐng)選擇班級(jí)</option> <option>一班</option> <option>二班</option> <option>三班</option> </select>
需要讓其默認(rèn)選中,在data中對(duì)其字段進(jìn)行賦值即可
1.5 textarea
textarea文本域標(biāo)簽看著就沒(méi)有那么多花里胡哨的把式,跟默認(rèn)的input框一樣即可正常獲取數(shù)據(jù)
簡(jiǎn)介: <textarea v-model="desc"></textarea>
1.6 表單提交
表單元素中的數(shù)據(jù)都能獲取到后,如何將其在控制臺(tái)進(jìn)行打印輸出呢?可以看到如下圖,當(dāng)在form表單中點(diǎn)擊按鈕時(shí)頁(yè)面會(huì)刷新,這是因?yàn)樘峤缓竽J(rèn)的動(dòng)作就是跳轉(zhuǎn)頁(yè)面
如何避免頁(yè)面刷新呢?這里需要給form標(biāo)簽綁定vue中的prevent事件并綁定對(duì)應(yīng)的函數(shù)
<form @submit.prevent="test"> </form>
通過(guò)在函數(shù)中打印this._data的方式進(jìn)行輸出
但是每次取值時(shí)都這樣去獲取_data,是不太優(yōu)雅的行為,建議用一個(gè)對(duì)象將這些字段都裝進(jìn)去,在取值時(shí)直接取這個(gè)對(duì)象
這樣也要付出相對(duì)應(yīng)的代價(jià),就是在頁(yè)面上雙向綁定的地方都得給它加上對(duì)應(yīng)的前綴
1.7 表單修飾符
在Vue中,修飾符處理了許多DOM事件的細(xì)節(jié)
number修飾符
number修飾符,對(duì)類型進(jìn)行轉(zhuǎn)換,轉(zhuǎn)為有效的數(shù)字,避免提交時(shí)的數(shù)據(jù)帶上雙引號(hào)導(dǎo)致錯(cuò)誤
<label for="height">身高:</label> <input type="number" id="height" v-model.number="info.height" />
lazy修飾符
添加lazy修飾符,在失去焦點(diǎn)的一瞬間再獲取數(shù)據(jù),不是實(shí)時(shí)獲取。少量數(shù)據(jù)時(shí)效果不明顯,如果是富文本且需要修改的內(nèi)容是大量的那效果是很顯著的
<textarea v-model.lazy="info.desc"></textarea>
trim修飾符
trim顧名思義同時(shí)也很常見(jiàn),去除首尾空格,字符中間的空格無(wú)法去除
<input type="text" v-model.trim="info.number" id="number" autocomplete="off" />
總結(jié)
到此這篇關(guān)于Vue如何獲取表單數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Vue獲取表單數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
VUE中Echarts的resize事件報(bào)錯(cuò)和移除windows的事件問(wèn)題
這篇文章主要介紹了VUE中Echarts的resize事件報(bào)錯(cuò)和移除windows的事件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07解決vue項(xiàng)目報(bào)錯(cuò)webpackJsonp is not defined問(wèn)題
下面小編就為大家分享一篇解決vue項(xiàng)目報(bào)錯(cuò)webpackJsonp is not defined問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03Vue首屏性能優(yōu)化組件知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理了一篇關(guān)于Vue首屏性能優(yōu)化組件知識(shí)點(diǎn)總結(jié),有需要的朋友們可以跟著學(xué)習(xí)下。2021-11-11vue3 ElementUI 日期禁選當(dāng)日前當(dāng)日后三天后的實(shí)現(xiàn)代碼
這篇文章主要介紹了vue3 ElementUI 日期禁選當(dāng)日前當(dāng)日后三天后的實(shí)現(xiàn)代碼,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-05-05websocket+Vuex實(shí)現(xiàn)一個(gè)實(shí)時(shí)聊天軟件
這篇文章主要利用websocked 建立長(zhǎng)連接,利用Vuex全局通信的特性,以及watch,computed函數(shù)監(jiān)聽(tīng)消息變化,并驅(qū)動(dòng)頁(yè)面變化實(shí)現(xiàn)實(shí)時(shí)聊天,感興趣的可以了解一下2021-08-08Vue 中使用vue2-highcharts實(shí)現(xiàn)top功能的示例
下面小編就為大家分享一篇Vue 中使用vue2-highcharts實(shí)現(xiàn)top功能的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03Vue3實(shí)現(xiàn)富文本內(nèi)容導(dǎo)出為Word文檔
這篇文章主要為大家詳細(xì)介紹了Vue3如何通過(guò)純前端方案將富文本內(nèi)容直接導(dǎo)出為符合中文排版規(guī)范的 Word 文檔,有需要的小伙伴可以參考下2025-03-03element中el-table與el-form同用并校驗(yàn)
本文主要介紹了element中el-table與el-form同用并校驗(yàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08