Vue学习:收集表单数据 form-input 与v-model

如何使得点击文字,也可以获得表单数据的焦点使用label

label for="demo"> 账号:</label>
           <input type="text" id="demo">

v-model默认收集input框的value值 text类型 输入值等于value值

            <label for="demo1">账号:</label>
            <input type="text" id="demo1" v-model="account"><br>
            <label for="demo2">密码:</label>
            <input type="password" id="demo2" v-model="password"><br>
   account:'',
     password:'',

二选一,radio时候没有value ,需要特意添加value值 radio

 性别:
            <label for="demo3">男</label>
            <input type="radio" id="demo3" name="sex" v-model="sex" value="male">
            <label for="demo4">女</label>
            <input type="radio" id="demo4" name="sex" v-model="sex" value="female"><br>
   sex:'female',//设置默认值

多选多checkbox:可以勾选和取消勾选的输入框的双向绑定的实现:也必须实现value的手动编写,否则Vue实现的是对其中的某一个标签的的checked(即是否被勾选的值)

点击一个,会使得hobby=ture,双向绑定 ,会让其他的进行选上

hobby初始值会影响v-model收集回来的数据 要写成数组形式

  爱好:
            <label for="demo5">学习</label>
            <input type="checkbox" id="demo5" v-model="hobby" value="study">
            <label for="demo6">打游戏</label>
            <input type="checkbox" id="demo6" v-model="hobby" value="game">
            <label for="demo7">吃饭</label>
            <input type="checkbox" id="demo7" v-model="hobby" value="eat">
    data: {
                account: '',
                password: '',
                sex: 'female',//设置默认值
                hobby:[],



            },

select-option 选择框

            <select v-model="city">
                <option value="">请选择校区</option>
                <option value="beijing">北京校区</option>
                <option value="shanghai">上海校区</option>
                <option value="shenzhen">深圳校区</option>
                <option value="wuhan">武汉区</option>
            </select>

  city:'',
 city:'beijing',

默认选择

多行输入 输入就是value

 <textarea v-model="other"></textarea><br>

 other:'',

checkbox 是否确定false true

   <input type="checkbox" v-model="agree">阅读并接受<a href="#">《用户协议》</a>

  agree:''

另外在表单数据中存在提交按钮,会引起表单的提交会存在默认的跳转页面,也即是刷新。表单提交可以绑定一个@submit 绑定一个方法 组织默认行为 prevent

输出的是json格式的

<form @submit.prevent="demo">
            methods: {
                demo(){
                    //需要提交表单内的信息
                    console.log(JSON.stringify(this._data))

                }
            },

然后可以进行优化 (不直接使用_date)

            methods: {
                demo() {
                    //需要提交表单内的信息
                    console.log(JSON.stringify(this.userInfo))

                }
            },

v-model修饰符:比如想要输入的内容是数字类型的数据 v-model.number

但是收集的是字符串数据类型 实际需要时数字类型的数据

<label for="demo8">年龄:</label>
            <input type="number" id="demo8" v-model.number="userInfo.age"><br>

v-model修饰符:延迟收到输入的内容 当失去焦点才进行收集 v-model.lazy

  <textarea v-model.lazy="userInfo.other"></textarea><br>

v-model修饰符:去掉前后空格 v-model.trim

  <input type="text" id="demo1" v-model.trim="userInfo.account"><br>
<!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>

    <script type="text/javascript" src="./js引入/测试版本/vue.js"></script>
</head>

<body>
    <!-- 计算属性实现 -->
    <!-- 准备容器 -->
    <div id='root'>
        <form @submit.prevent="demo">
            <label for="demo1">账号:</label>
            <input type="text" id="demo1" v-model.trim="userInfo.account"><br>
            <label for="demo2">密码:</label>
            <input type="password" id="demo2" v-model="userInfo.password"><br>
            <label for="demo8">年龄:</label>
            <input type="number" id="demo8" v-model.number="userInfo.age"><br>
            性别:
            <label for="demo3">男</label>
            <input type="radio" id="demo3" name="sex" v-model="userInfo.sex" value="male">
            <label for="demo4">女</label>
            <input type="radio" id="demo4" name="sex" v-model="userInfo.sex" value="female"><br>
            爱好:
            <label for="demo5">学习</label>
            <input type="checkbox" id="demo5" v-model="userInfo.hobby" value="study">
            <label for="demo6">打游戏</label>
            <input type="checkbox" id="demo6" v-model="userInfo.hobby" value="game">
            <label for="demo7">吃饭</label>
            <input type="checkbox" id="demo7" v-model="userInfo.hobby" value="eat">
            <br>
            <select v-model="userInfo.city">
                <option value="">请选择校区</option>
                <option value="beijing">北京校区</option>
                <option value="shanghai">上海校区</option>
                <option value="shenzhen">深圳校区</option>
                <option value="wuhan">武汉区</option>
            </select>
            <br>
            其他信息:
            <textarea v-model.lazy="userInfo.other"></textarea><br>
            <input type="checkbox" v-model="userInfo.agree">阅读并接受<a href="#">《用户协议》</a>
            <br>
            <button>提交</button>

        </form>

    </div>
    <script>
        new Vue({
            el: '#root',
            data: {
                userInfo: {
                    account: '',
                    password: '',
                    age:'',
                    sex: 'female',//设置默认值
                    hobby: [],
                    city: '',
                    other: '',
                    agree: '',

                }

            },
            methods: {
                demo() {
                    //需要提交表单内的信息
                    console.log(JSON.stringify(this.userInfo))

                }
            },

        });
    </script>
</body>

</html>

收集表单数据总结

<input type="text" v-model收集的时value值 用户输入的就是value值

<input type="radio" v-model收集的时value值 并且需要给标签配置value值

<input type="checkbox"

v-model收集的时checked值(勾选 不勾选 得出的时布尔值) 需要配置value属性

v-model的初始值时非数组,收集的就是布尔值

V-model初始值时数组,收集的就是value组成的数组

备注:v-model的三个修饰符:

lazy:失去焦点再收集数据

number:输入字符串转为有效的数字

trim:输入的字符进行首尾空格过滤

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值