Vue收集表单数据学习笔记

文章详细介绍了在Vue.js中如何利用v-model进行双向数据绑定来收集表单数据,特别是对于radio和checkbox的处理,强调了value的重要性。初始数据应适当地设置为数组以收集多选数据,并提到了v-model的修饰符如lazy、number和trim的用途。
摘要由CSDN通过智能技术生成

收集表单数据

v-model双向数据绑定,收集的是input框的value,单选按钮不存在value,就像代码中的男女选项,即使绑定性别v-model=“sex”,控制台依然不能接收性别的值,因为没有value值,,想要接收数据需要在单选input框输入value来标记男女,后台会输出value。
在这里插入图片描述

多组的勾选框应该把初始数据写成数组,再添加v-model双向绑定hobby,给每个勾选的数据添加value值,最后收集的就是value组成的数组。

因为hobby初始值会影响v-model收集数据,如果不在实例里面你设置hobby为数组,那么无法获取数据指挥显示true和false。

<div id="form">
        <form @submit.prevent="demo">
            账号: <input type="text" v-model.trim="userInfo.account"><br /><br />
            密码:<input type="password" v-model="userInfo.password"><br /><br />
            性别:男<input type="radio" name="sex" v-model="userInfo.sex" value="male">
            女<input type="radio" name="sex" v-model="userInfo.sex" value="female"><br /><br /><br />
            年龄:<input type="number" v-model.number="userInfo.age"><br /><br />
            爱好:
            学习<input type="checkbox" v-model="userInfo.hobby" value="study">
            打游戏<input type="checkbox" v-model="userInfo.hobby" value="game">
            开车<input type="checkbox" v-model="userInfo.hobby" value="drive"><br /><br /><br />
            所属校区:<select v-model="userInfo.city">
                <option value="">请选择校区</option>
                <option value="">北京</option>
                <option value="">上海</option>
                <option value="">广州</option>
                <option value="">杭州</option>
            </select>
            <br /><br /><br />
            其他信息:
            <textarea v-model.lazy="userInfo.other"></textarea><br />
            <input type="checkbox" v-model="userInfo.agree"> 阅读并接受<a href="www.baidu.com">《用户协议》</a>
            <button>提交</button>
        </form>
    </div>

所属校区v-model:,通过指定data里面city值来设置默认值。
接受协议里面只是勾选不需要value设置v-model就可以。

提交表单默认跳转事件(.prevent阻止默认行为),表单提交设置form的submit的demo事件,data里面写demo

可以通过console.log(this._data)来输出页面中的数据,但是一般不在代码中直接操作_data,所以将data所有数据包裹在userInfo里面,页面中所有v-model都要添加userInfo来访问

<script>
        const vm = new Vue({
            el: '#form',
            data: {
                userInfo: {
                    account: '',
                    password: '',
                    sex: 'female',
                    age: '',
                    hobby: [],
                    city: 'beijing',
                    other: '',
                    agree: ''
                }
            },
            methods: {
                demo() {
                    // console.log(this._data)
                    // alert(1)
                    console.log(JSON.stringify(this.userInfo))
                }
            }
        })
    </script>

在这里插入图片描述

总结

收集数据表单:
若:,则v-model收集的是value值,用户输入的就是value值。
若:,则v-model收集的是value值,且要给标签配置value值。
若:
1. 没有配置input的value值,那么收集的就是checked(勾选是true,未勾选为false)
2. 配置input的value属性:
(1)v-model的初始值是非数组,那么收集的就是checked(勾选是true,未勾选为false)
(2)v-model的初始值是数组,那么收集的就是value组成的数组

v-model的三个修饰符:
        lazy:失去焦点再收集数据
        number:输入字符串转为有效的数字
        trim:输入首尾空格过滤

 lazy:失去焦点再收集数据
        number:输入字符串转为有效的数字
        trim:输入首尾空格过滤
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隐藏用户y

虽然不是很有才华,但是渴望打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值