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

解決vue表單為空也能提交的問題

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

vue表單為空也能提交

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

最后通過vue devtools這個工具找到了問題所在。

大概是這樣寫的

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

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

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

vue的表單提交方式

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

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="請輸入用戶名">
                </label>
            </div>
            <div>
                <label>密碼
                    <input v-model="form.password" type="password" placeholder="請輸入密碼">
                </label>
            </div>
            <div>
                <label>頭像<input type="file" @change="handleChange"></label>
            </div>
            <div>
                <label>姓名
                    <input v-model.trim="form.name" type="text" placeholder="請輸入您的姓名">
                </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="請輸入年齡">
                </label>
            </div>
            <div>
                <label>愛好
                    <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>

上述代碼有三點需要說明

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

預(yù)覽

數(shù)據(jù)

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

相關(guān)文章

  • Vue——解決報錯 Computed property

    Vue——解決報錯 Computed property "****" was assigned to but it ha

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

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

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

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

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

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

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

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

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

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

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

    vue-cli項目優(yōu)化方法- 縮短首屏加載時間

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

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

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

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

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

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

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

最新評論

泾阳县| 卢湾区| 维西| 汕头市| 吉木乃县| 嘉义市| 汤阴县| 陇西县| 东明县| 阿坝县| 彭阳县| 丹阳市| 新竹县| 阜南县| 城市| 汽车| 南投县| 台东市| 宝坻区| 泗洪县| 双城市| 通江县| 丰县| 蓝田县| 徐州市| 嵊州市| 武川县| 新晃| 泸溪县| 彰武县| 密山市| 汾阳市| 大庆市| 清涧县| 商河县| 丁青县| 霍山县| 江孜县| 和平县| 井陉县| 洛宁县|