最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決vue表單為空也能提交的問(wèn)題

 更新時(shí)間:2022年06月01日 10:57:54   作者:ShiyuTim  
這篇文章主要介紹了解決vue表單為空也能提交的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue表單為空也能提交

今天在用Vue寫(xiě)表單驗(yàn)證的時(shí)候,習(xí)慣性把v-model綁定的值設(shè)置為null,然后再測(cè)試的時(shí)候,發(fā)現(xiàn)如果填寫(xiě)了表單后,又刪除輸入的內(nèi)容,竟然能提交上去,百思不得其解。

最后通過(guò)vue devtools這個(gè)工具找到了問(wèn)題所在。

大概是這樣寫(xiě)的

<input v-model="ipt" ?/>
data () {
????return {
????????ipt: null,
????}
}
if(this.ipt !== null) {
?? ?axios.post()...
}

研究了老半天,最后通過(guò)vue工具發(fā)現(xiàn)最初設(shè)置ipt的值為null,當(dāng)表單輸入內(nèi)容,又刪除之后,雖然內(nèi)容不見(jiàn)了,但是ipt的值變?yōu)榱?#39;',這樣就不能通過(guò)簡(jiǎn)單的!== nulll來(lái)判斷了。

if(this.ipt !== null && ?this.ipt) {
?? ?axios.post()...
}

vue的表單提交方式

每次做項(xiàng)目都會(huì)用,也會(huì)踩一些坑,這里統(tǒng)一整理一下,當(dāng)個(gè)模板用

vue表單收集和提交

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <form :model="form" @submit.prevent="submit">
            <div>
                <label>用戶名
                    <input v-model.trim="form.username" type="text" placeholder="請(qǐng)輸入用戶名">
                </label>
            </div>
            <div>
                <label>密碼
                    <input v-model="form.password" type="password" placeholder="請(qǐng)輸入密碼">
                </label>
            </div>
            <div>
                <label>頭像<input type="file" @change="handleChange"></label>
            </div>
            <div>
                <label>姓名
                    <input v-model.trim="form.name" type="text" placeholder="請(qǐng)輸入您的姓名">
                </label>
            </div>
            <div>
                <label>性別
                    <label><input v-model="form.sex" type="radio" name="sex" value="male">男</label>
                    <label><input v-model="form.sex" type="radio" name="sex" value="female">女</label>
                </label>
            </div>
            <div>
                <label>年齡
                    <input type="number" v-model.number="form.age" placeholder="請(qǐng)輸入年齡">
                </label>
            </div>
            <div>
                <label>愛(ài)好
                    <label>
                        <input v-model="form.hobby" type="checkbox" value="study">學(xué)習(xí)
                    </label>
                    <label>
                        <input v-model="form.hobby" type="checkbox" value="games">打游戲
                    </label>
                    <label>
                        <input v-model="form.hobby" type="checkbox" value="eat">吃飯
                    </label>
                </label>
            </div>
            <div>
                <label>所屬校區(qū)
                    <select v-model="form.campus">
                        <option value="beijing">北京</option>
                        <option value="shanghai">上海</option>
                        <option value="shenzhen">深圳</option>
                        <option value="wuhan">武漢</option>
                    </select>
                </label>
            </div>
            <div>
                <label>其他信息
                    <textarea v-model.lazy="form.other" style="vertical-align: middle;" cols="30" rows="10"></textarea>
                </label>
            </div>
            <div>
                <label>
                    <input v-model="form.accept" type="checkbox">
                    閱讀并接受<a  rel="external nofollow" >《用戶協(xié)議》</a>
                </label>
            </div>
            <div>
                <button>提交</button>
            </div>
        </form>
    </div>
    <script src="lib/vue.js"></script>
    <script>
        Vue.config.productionTip = false
        const vm = new Vue({
            el: '#app',
            data() {
                return {
                    form: {
                        hobby: []
                    },
                    image: {}
                }
            },
            methods: {
                submit() {
                    console.log(this.form);
                    //在這里進(jìn)行上傳(axios、ajax)
                },
                handleChange(event) {
                    let file = event.target.files[0]
                    this.form.image = file
                }
            },
        })
    </script>
</body>
</html>

上述代碼有三點(diǎn)需要說(shuō)明

  • 在<form>標(biāo)簽中出現(xiàn)了:model="form",這是為了將form中的各項(xiàng)數(shù)據(jù)動(dòng)態(tài)收集到vue的data中的form對(duì)象中,方便統(tǒng)一管理
  • form標(biāo)簽上的@submit.prevent為提交時(shí)阻止表單的默認(rèn)行為(跳轉(zhuǎn))
  • v-model.trim是將輸入的數(shù)據(jù)去除前后的空格;v-model.number是轉(zhuǎn)換為Number類(lèi)型;v-model.lazy是失去焦點(diǎn)后再把數(shù)據(jù)渲染到頁(yè)面上

預(yù)覽

數(shù)據(jù)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • Vue——解決報(bào)錯(cuò) Computed property

    Vue——解決報(bào)錯(cuò) Computed property "****" was assigned to but it ha

    這篇文章主要介紹了Vue——解決報(bào)錯(cuò) Computed property "****" was assigned to but it has no setter.的方法,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2020-12-12
  • vue如何實(shí)現(xiàn)pc和移動(dòng)端布局詳細(xì)代碼

    vue如何實(shí)現(xiàn)pc和移動(dòng)端布局詳細(xì)代碼

    這篇文章主要給大家介紹了關(guān)于vue如何實(shí)現(xiàn)pc和移動(dòng)端布局的相關(guān)資料, Vue響應(yīng)式布局適配是一種根據(jù)設(shè)備特性自動(dòng)調(diào)整布局的方法,文中通過(guò)代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • 使用vue-draggable-plus實(shí)現(xiàn)拖拽排序

    使用vue-draggable-plus實(shí)現(xiàn)拖拽排序

    最近遇到一個(gè)需求,在 Vue3 的一個(gè) H5 頁(yè)面當(dāng)中點(diǎn)擊拖拽圖標(biāo)上下拖動(dòng) tab 子項(xiàng),然后點(diǎn)擊保存可以保存最新的 tab 項(xiàng)順序,同事說(shuō)可以用 vue-draggable-plus 這個(gè)庫(kù)來(lái)實(shí)現(xiàn)拖拽,所以本文給大家介紹了如何使用vue-draggable-plus實(shí)現(xiàn)拖拽排序,需要的朋友可以參考下
    2024-01-01
  • vue-draggable實(shí)現(xiàn)拖拽表單的示例代碼

    vue-draggable實(shí)現(xiàn)拖拽表單的示例代碼

    本文主要介紹了vue-draggable實(shí)現(xiàn)拖拽表單的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 結(jié)合mint-ui移動(dòng)端下拉加載實(shí)踐方法總結(jié)

    結(jié)合mint-ui移動(dòng)端下拉加載實(shí)踐方法總結(jié)

    下面小編就為大家?guī)?lái)一篇結(jié)合mint-ui移動(dòng)端下拉加載實(shí)踐方法總結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • Vue中子組件向父組件傳值$emit、.sync的案例詳解

    Vue中子組件向父組件傳值$emit、.sync的案例詳解

    這篇文章主要介紹了Vue中子組件向父組件傳值$emit、.sync的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • vue-cli項(xiàng)目?jī)?yōu)化方法- 縮短首屏加載時(shí)間

    vue-cli項(xiàng)目?jī)?yōu)化方法- 縮短首屏加載時(shí)間

    這篇文章主要介紹了vue-cli項(xiàng)目?jī)?yōu)化 縮短首屏加載時(shí)間,需要的朋友可以參考下
    2018-04-04
  • vue項(xiàng)目如何實(shí)現(xiàn)前端預(yù)覽word與pdf格式文件

    vue項(xiàng)目如何實(shí)現(xiàn)前端預(yù)覽word與pdf格式文件

    最近項(xiàng)目中需要在線預(yù)覽WORD文檔,所以給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目如何實(shí)現(xiàn)前端預(yù)覽word與pdf格式文件的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • vue中的循環(huán)對(duì)象屬性和屬性值用法

    vue中的循環(huán)對(duì)象屬性和屬性值用法

    這篇文章主要介紹了vue中的循環(huán)對(duì)象屬性和屬性值用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • 使用vue-cli導(dǎo)入Element UI組件的方法

    使用vue-cli導(dǎo)入Element UI組件的方法

    這篇文章給大家介紹了使用vue-cli導(dǎo)入Element UI組件的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友一起看看吧
    2018-05-05

最新評(píng)論

科技| 山阴县| 盘锦市| 阿合奇县| 铜陵市| 四川省| 贵港市| 晴隆县| 连州市| 威海市| 广河县| 彭州市| 韶山市| 侯马市| 舟曲县| 舞阳县| 和顺县| 旬阳县| 永胜县| 桐庐县| 拉萨市| 宁德市| 江西省| 牙克石市| 彰化市| 湘西| 惠安县| 尚义县| 章丘市| 青川县| 台湾省| 咸丰县| 景泰县| 颍上县| 商城县| 双柏县| 东乌珠穆沁旗| 平凉市| 南开区| 襄城县| 都江堰市|