zoukankan      html  css  js  c++  java
  • Vue之表单输入绑定

    基础用法:

      你可以用 v-model 指令在表单 <input>、<textarea> 及 <select> 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 v-model 本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。

    收集表单数据:

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

    代码举例

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8" />
            <title>收集表单数据</title>
            <script type="text/javascript" src="../js/vue.js"></script>
        </head>
        <body>
            <!-- 准备好一个容器-->
            <div id="root">
                <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="number" v-model.number="userInfo.age"> <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/> 爱好: 学习<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="eat"> <br/><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/><br/> 其他信息:
              <!-- 失去焦点再收集数据 -->
               <textarea v-model.lazy="userInfo.other"></textarea> <br/><br/>
               <!-- 点击用户协议查看的内容,还是跳转到官网 -->
                <input type="checkbox" v-model="userInfo.agree">阅读并接受<a href="https://cn.vuejs.org/">《用户协议》</a>
                    <button>提交</button>
                </form>
            </div>
        </body>
    
        <script type="text/javascript">
            Vue.config.productionTip = false
    
            new Vue({
                el:'#root',
                data:{
                    userInfo:{
                        account:'',
                        password:'',
                        age:18,
                        sex:'female',
                        hobby:[],
                        city:'beijing',
                        other:'',
                        agree:''
                    }
                },
                methods: {
                    demo(){
                        console.log(JSON.stringify(this.userInfo))
                    }
                }
            })
        </script>
    </html>

    效果展示:

  • 相关阅读:
    C++实现base64编码
    php实现base64编码
    美团2016研发工程师笔试题(绑鞋带问题)
    URL encode 与 URL decode 的C语言实现
    常用排序算法集合-C实现
    用文件实现计算器要求多进程同时写
    vim操作命令-笔记
    Can't connect to local MySQL server through socket
    小程序页面跳转数据丢失
    Vue路由 --登录状态的判断
  • 原文地址:https://www.cnblogs.com/ftx3q/p/15322858.html
Copyright © 2011-2022 走看看