Vue 收集表单数据 详细解释

举报
可期 发表于 2021/12/09 17:10:15 2021/12/09
【摘要】 相信自己的直觉,顽固的人不喊累!今天来详细解释Vue 收集表单的数据,说到数据我们就想到要使用v-model ,双向数据绑定,技能收集用户输入数据,又能想页面传入数据那么我们下面就来做一个简单的表单介绍vue是如何收集数据的1.首先我们使用html编写一个简单的表单,有输入框,单选框,多选框,密码框,下拉框,文本框,以及按钮<form id="root" @submit.prevent='d...

相信自己的直觉,顽固的人不喊累!

今天来详细解释Vue 收集表单的数据,说到数据我们就想到要使用v-model ,双向数据绑定,技能收集用户输入数据,又能想页面传入数据

那么我们下面就来做一个简单的表单介绍vue是如何收集数据的

1.首先我们使用html编写一个简单的表单,有输入框,单选框,多选框,密码框,下拉框,文本框,以及按钮

<form id="root" @submit.prevent='dome'>
        账号:<input type="text" v-model.trim="account">
        <!-- trim 控制vue不收集空格 -->
        <br><br>
        密码:<input type="password" v-model="password">
        <br><br>
        年龄:<input type="number" v-model.number="age">
        <!-- number html中控制只能输入数字,vue中控制只能接收数字 -->
        性别:
        男<input type="radio" name="sex" value="man" v-model="sex"><input type="radio" name="sex" value="woman" v-model="sex">
        <br><br>
        爱好:
        学习<input type="checkbox" v-model="hobby" value="study">
        打游戏<input type="checkbox" v-model="hobby" value="play">
        吃饭<input type="checkbox" v-model="hobby" value="eat">
        <br><br>
        所属学校:
        <select v-model="school">
            <option value="">请选择校区</option>
            <option value="beijing">北京</option>
            <option value="shanghai">上海</option>
            <option value="shenzhen">深圳</option>
            <option value="wuhan">武汉</option>
        </select>
        <br><br>
        其他信息:
        <textarea cols="30" rows="5" v-model.lazy="other"></textarea>
        <!-- lazy修饰符 控制页面失去焦点后收集信息 -->
        <br><br>
        <input type="checkbox" v-model="gree">阅读并接受<a href="http://baidu.com">《用户协议》</a>
        <button>提交</button>
    </form>

看到这里,有没有对value值疑惑的小伙伴。
我们对不同的选择框设置不同的value值,是因为Vue默认v-model 双向数据绑定,那么如果不设置value值,Vue识别到的就同时识别到多个选择框,影响数据收集。

性别:
        男<input type="radio" name="sex" value="man" v-model="sex"><input type="radio" name="sex" value="woman" v-model="sex">

比如说在这里,如果我们不设置value值,那么当你点击男选项时Vue就会自动识别但sex,而sex绑定了男,女两个选项,就会导致同时勾选两个选项。设置value值后Vue会自动识别不同选项的不同value值从而获取到精确的数据。

2.接着我们在Vue中创建相应的对象,获取页面的数据内容

data:{
            account:'',
            password:'',
            sex:'',
            hobby:[],
            school:'beijing',
            other:'',
            gree:'',
            age:[]
        }

这里hobby我们创建为数组,原因是初始值会影响收集回来的值,如果为字符串,只会读一个checked

3.下面做数据的接收

methods: {
            dome(){
                console.log(JSON.stringify(this._data))
            }
        }

因为我们的数据储存在data中所以我们直接从data中获取

4.这里在讲解三个Vue修饰符
(1)lazy 失去焦点再收集数据

其他信息:
        <textarea cols="30" rows="5" v-model.lazy="other"></textarea>

我们知道Vue收集数据是时时的,但是如果我们希望在用户输入完成后收集,就可以在后面加上lazy,即如上在文本框失去焦点后Vue再收集数据。

(2)trim:捕收集空格

这个修饰符是控制Vue不收集空字符串,比如在密码框中可以设置默认不收集空字符串。

(3)number:输入字符串转为有效数字

年龄:<input type="number" v-model.number="age">

有了number这个修饰符Vue在收集电话号码或者年龄时就不会担心收集到非number值。

本章总结:

收集表单:
若: <input type="text">. 则v-model 收集的是value值,用户输入就是value值。
若: <input type="radio">. 则v-model 收集的是value值,且给标签配置value值。
若: <input type="checkbox">
1. 没有配置input的value属性,那么收集的就是checked(勾选 or 未勾选,是布尔值)
2.v-model的初始值是数组,那么收集的就是value组成的数组
备注:
v-model 的三个修饰符:
lazy:失去焦点在收集数据
trim:捕收集空格
number:输入字符串转为有效数字

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。