Vue3表单

news2025/1/24 2:24:00

文章目录

  • Vue3表单
    • 1. 概念
    • 2. 输入框
    • 3. 复选框
    • 4. 单选按钮
    • 5. select下拉列表
      • 5.1 下拉列表单选
      • 5.1 下拉列表多选时绑定到数组
      • 5.3 使用 v-for 循环输出选项
    • 6. 值绑定
    • 7. 修饰符
      • 7.1 .lazy
      • 7.2 .number
      • 7.3 .trim

Vue3表单

1. 概念

可以用 v-model 指令在表单 、 及 等元素上创建双向数据绑定。

在这里插入图片描述

  • v-model 会根据控件类型自动选取正确的方法来更新元素。

  • v-model 会忽略所有表单元素的 value、checked、selected 属性的初始值,使用的是 data 选项中声明初始值。

  • v-model 在内部为不同的输入元素使用不同的属性并抛出不同的事件:

      text 和 textarea 元素使用 value 属性和 input 事件;
      checkbox 和 radio 使用 checked 属性和 change 事件;
      select 字段将 value 作为属性并将 change 作为事件。
    

2. 输入框

  • inputtextarea 元素中使用 v-model 实现双向数据绑定:

  • 注意:在文本区域 textarea 插值是不起作用,需要使用 v-model 来代替

  • textarea 是多行文本输入

    <!-- 错误 -->
    <textarea>{{ text }}</textarea>
    
    <!-- 正确 -->
    <textarea v-model="text"></textarea>
    
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>Vue 测试实例  form表单 输入框</title>
        <script src="https://cdn.staticfile.org/vue/3.2.36/vue.global.min.js"></script>
    </head>
    <body>
    <!--创建一个id为app class为demo的div-->
    <div id="app" class="demo">
        <!--    对输入框使用v-mode双向数据绑定message1 placeholder设置默认信息-->
        <p>input元素:</p>
        <input v-model="message1" placeholder="编辑我">
        <p>input表单输入消息为:{{ message1 }}</p>
    
    <!--    textarea元素 多行文本输入 使用v-mode双向数据绑定-->
        <p>textarea元素</p>
        <textarea v-model="message2" placeholder="多行文本输入..."></textarea>
        <p>textarea输入的表单消息为:</p>
        <p style="white-space: pre">{{ message2 }}</p>
    </div>
    
    <script>
        //    定义Vue3的HelloVueApp应用
        const HelloVueApp = {
            data() {
            //     定义返回值
                return {
                    message1: '',
                    message2: '比亚迪官网\r\nhttps://www.bydglobal.com/cn/index.html'
                }
    
            }
        }
    
        // 创建HelloVueApp应用,mount('#app') 将 Vue 应用 HelloVueApp 挂载到 <div id="app" class="demo">中
        Vue.createApp(HelloVueApp).mount('#app')
    </script>
    </body>
    </html>
    

    页面效果:
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

3. 复选框

复选框如果是一个为逻辑值,如果是多个则绑定到同一个数组:

  • 复选框的双向数据绑定

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>Vue 测试实例  form表单 输入框</title>
        <script src="https://cdn.staticfile.org/vue/3.2.36/vue.global.min.js"></script>
    </head>
    <body>
    <!--创建一个id为app class为demo的div-->
    <div id="app" class="demo">
    <!--   复选框是一个则为逻辑值 使用v-mode双向数据绑定-->
        <p>单个复选框:</p>
        <input type="checkbox" id="check" v-model="checked">
        <label for="check">{{ checked }}</label>
    
    <!--    多个复选框是多个 使用v-mode双向数据绑定到同一个数组checkedNames中-->
        <p>多个复选框</p>
        <input type="checkbox" id="runoob" value="Runoob" v-model="checkedNames">
        <label for="runoob">Runoob</label>
        <input type="checkbox" id="google" value="Google" v-model="checkedNames">
        <label for="google">Google</label>
        <input type="checkbox" id="taobao" value="Taobao" v-model="checkedNames">
        <label for="taobao">Taobao</label>
        <br>
        <span>
            选择的值为:{{ checkedNames }}
        </span>
    </div>
    
    <script>
        //    定义Vue3的HelloVueApp应用
        const HelloVueApp = {
            data() {
            //     定义返回值
                return {
                    checked: false,
                    checkedNames: []
                }
    
            }
        }
    
        // 创建HelloVueApp应用,mount('#app') 将 Vue 应用 HelloVueApp 挂载到 <div id="app" class="demo">中
        Vue.createApp(HelloVueApp).mount('#app')
    </script>
    </body>
    </html>
    

    页面效果:
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

4. 单选按钮

单选按钮的双向数据绑定:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Vue 测试实例  form表单 单选框</title>
    <script src="https://cdn.staticfile.org/vue/3.2.36/vue.global.min.js"></script>
</head>
<body>
<!--创建一个id为app class为demo的div-->
<div id="app" class="demo">
<!--   复选框是一个则为逻辑值 使用v-mode双向数据绑定-->
    <p>单选框:</p>
    <input type="radio" id="runoob" value="Runoob" v-model="picked">
    <label for="runoob">Runoob</label>
    <br>
    <input type="radio" id="google" value="Google" v-model="picked">
    <label for="google">Google</label>
    <br>
    <input type="radio" id="taobao" value="Tabobao" v-model="picked">
    <label for="taobao">Taobao</label>
    <br>
    <span>
        选择的值为:{{ picked }}
    </span>
</div>

<script>
    //    定义Vue3的HelloVueApp应用
    const HelloVueApp = {
        data() {
        //     定义返回值
            return {
                picked: 'Runoob'
            }

        }
    }

    // 创建HelloVueApp应用,mount('#app') 将 Vue 应用 HelloVueApp 挂载到 <div id="app" class="demo">中
    Vue.createApp(HelloVueApp).mount('#app')
</script>
</body>
</html>

页面效果:

在这里插入图片描述
在这里插入图片描述

5. select下拉列表

5.1 下拉列表单选

  • 下拉列表的双向数据绑定

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>Vue 测试实例  form表单 下拉列表</title>
        <script src="https://cdn.staticfile.org/vue/3.2.36/vue.global.min.js"></script>
    </head>
    <body>
    <!--创建一个id为app class为demo的div-->
    <div id="app" class="demo">
    <!--   下拉列表 使用v-mode双向数据绑定-->
        <p>下拉列表:</p>
        <select v-model="selected" name="site">
            <option value="">选择一个网站</option>
            <option value="www.runoob.com">Runoob</option>
            <option value="www.google.com">Google</option>
            <option value="www.taobao.com">Taobao</option>
        </select>
        <br><br>
        <span>
            选择的值为:{{ selected }}
        </span>
    </div>
    
    <script>
        //    定义Vue3的HelloVueApp应用
        const HelloVueApp = {
            data() {
            //     定义返回值
                return {
                    selected: ''
                }
    
            }
        }
    
        // 创建HelloVueApp应用,mount('#app') 将 Vue 应用 HelloVueApp 挂载到 <div id="app" class="demo">中
        Vue.createApp(HelloVueApp).mount('#app')
    </script>
    </body>
    </html>
    

    页面效果:在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

5.1 下拉列表多选时绑定到数组

多选时在select 标签后使用multiple<select v-model="selected" name="site" multiple>

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Vue 测试实例  form表单 下拉列表多选绑定值到数组</title>
    <script src="https://cdn.staticfile.org/vue/3.2.36/vue.global.min.js"></script>
</head>
<body>
<!--创建一个id为app class为demo的div-->
<div id="app" class="demo">
<!--   下拉列表 使用v-mode双向数据绑定-->
    <p>下拉列表:</p>
    <select v-model="selected" name="site" multiple>
        <option value="">选择一个网站</option>
        <option value="www.runoob.com">Runoob</option>
        <option value="www.google.com">Google</option>
        <option value="www.taobao.com">Taobao</option>
    </select>
    <br><br>
    <span>
        选择的值为:{{ selected }}
    </span>
</div>

<script>
    //    定义Vue3的HelloVueApp应用
    const HelloVueApp = {
        data() {
        //     定义返回值
            return {
                selected: ''
            }

        }
    }

    // 创建HelloVueApp应用,mount('#app') 将 Vue 应用 HelloVueApp 挂载到 <div id="app" class="demo">中
    Vue.createApp(HelloVueApp).mount('#app')
</script>
</body>
</html>

页面效果:
在这里插入图片描述
在这里插入图片描述

5.3 使用 v-for 循环输出选项

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Vue 测试实例  form表单 下拉列表 使用v-for输出循环项</title>
    <script src="https://cdn.staticfile.org/vue/3.2.36/vue.global.min.js"></script>
    <script src="https://unpkg.com/vue@next"></script>
</head>
<body>
<!--创建一个id为app class为demo的div-->
<div id="app" class="demo">
<!--   下拉列表 使用v-mode双向数据绑定-->
    <p>下拉列表:</p>
    <select v-model="selected">
        <option v-for="option in options" :value="option.value">
            {{ option.text }}
        </option>
    </select>
    <br><br>
    <span>
        选择的值为:{{ selected }}
    </span>
</div>

<script>
    //    定义Vue3的HelloVueApp应用
    const HelloVueApp = {
        data() {
        //     定义返回值
            return {
                selected: 'www.runoob.com',
                options: [
                    { text: 'Runoob', value: 'www.runoob.com'},
                    { text: 'Google', value: 'www.google.com'},
                    {text: 'Taobao', value: 'www.taobao.com'}
                ]
            }

        }
    }

    // 创建HelloVueApp应用,mount('#app') 将 Vue 应用 HelloVueApp 挂载到 <div id="app" class="demo">中
    Vue.createApp(HelloVueApp).mount('#app')
</script>
</body>
</html>

页面效果:
在这里插入图片描述
在这里插入图片描述

6. 值绑定

  • 对于单选按钮,复选框及选择框的选项,v-model 绑定的值通常是静态字符串 (对于复选框也可以是布尔值):

    <!-- 当选中时,`picked` 为字符串 "a" -->
    <input type="radio" v-model="picked" value="a" />
    
    <!-- `toggle` 为 true 或 false -->
    <input type="checkbox" v-model="toggle" />
    
    <!-- 当选中第一个选项时,`selected` 为字符串 "abc" -->
    <select v-model="selected">
      <option value="abc">ABC</option>
    </select>
    
  • 把值绑定到当前活动实例的一个动态属性上,这时可以用 v-bind 实现,此外,使用 v-bind 可以将输入值绑定到非字符串

    • 复选框 (Checkbox):

      <input type="checkbox" v-model="toggle" true-value="yes" false-value="no" />
      ...
      // 选中时
      vm.toggle === 'yes'
      // 取消选中 
      vm.toggle === 'no'
      
    • 单选框 (Radio):

      <input type="radio" v-model="pick" v-bind:value="a" />
      // 当选中时
      vm.pick === vm.a
      
    • 下拉选择框选项 (Select):

    <select v-model="selected">
      <!-- 内联对象字面量 -->
      <option :value="{ number: 123 }">123</option>
    </select>
    // 当被选中时
    typeof vm.selected // => 'object'
    vm.selected.number // => 123
    

7. 修饰符

7.1 .lazy

  • 默认情况下, v-model 在 input 事件中同步输入框的值与数据

  • 可以添加一个修饰符 lazy ,从而转变为在 change 事件中同步

    <!-- 在 "change" 而不是 "input" 事件中更新 -->
    <input v-model.lazy="msg" >
    

7.2 .number

如果想自动将用户的输入值转为 Number 类型(如果原值的转换结果为 NaN 则返回原值),可以添加一个修饰符 number 给 v-model 来处理输入值:

<input v-model.number="age" type="number">
  • 这通常很有用,因为在 type="number" 时 HTML 中输入的值也总是会返回字符串类型

7.3 .trim

如果要自动过滤用户输入的首尾空格,可以添加 trim 修饰符到 v-model 上过滤输入:

<input v-model.trim="msg">

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1006826.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信内测新功能:“微信分期”来了!

微信作为一款社交 App&#xff0c;早已成为了现在人们日常生活中不可缺少的一部分。 随着生态不断完善&#xff0c;它所涵盖的功能也是越来越多。 据镭射财经&#xff0c;微信近日正在测试一款名为“微信分期”的全系消费信贷产品。功能入口位于微信钱包中&#xff0c;资金方为…

预约微信小程序源码系统制作搭建 适用于多场景 支持万能DIY功能

分享一个预约微信小程序源码系统&#xff0c;适用于多种预约场景&#xff0c;含完整代码包前端后端详细的搭建教程&#xff0c;支持万能DIY功能&#xff0c;让你轻松开发制作一个属于自己的想要的预约小程序。 一、预约微信小程序源码系统制作搭建的基本步骤和注意事项&#xf…

【Flink实战】Flink 商品销量统计-实战Bahir Connetor实战存储 数据到Redis6.X

&#x1f680; 作者 &#xff1a;“大数据小禅” &#x1f680; 文章简介 &#xff1a;Flink 商品销量统计-实战Bahir Connetor实战存储 数据到Redis6.X &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 目录导航 Flink怎么操作RedisFlink 商品销量统…

宿舍考勤安全系数?这个答案全国统一!

在现代教育和住宿管理中&#xff0c;确保学生或员工的宿舍考勤管理变得越来越重要。传统的考勤方法可能受到人为错误和滥用的威胁&#xff0c;同时也可能耗费大量时间和资源。 人脸识别技术已经在各个领域展现了强大的潜力。它不仅提高了安全性&#xff0c;还改善了考勤管理的效…

GP08|财务估值因子过滤实盘小市值

量化策略开发&#xff0c;高质量社群&#xff0c;交易思路分享等相关内容 大家好&#xff0c;今天我们来分享gp08策略。千呼万唤始出来&#xff0c;由于xxx原因&#xff08;不便说&#xff0c;好奇的可以私聊我&#xff09;&#xff0c;我们从9月份开始&#xff0c;后面分享的策…

深入解析顺序表:揭开数据结构的奥秘,掌握顺序表的精髓

&#x1f493; 博客主页&#xff1a;江池俊的博客⏩ 收录专栏&#xff1a;数据结构探索&#x1f449;专栏推荐&#xff1a;✅C语言初阶之路 ✅C语言进阶之路&#x1f4bb;代码仓库&#xff1a;江池俊的代码仓库&#x1f525;编译环境&#xff1a;Visual Studio 2022&#x1f38…

包装类、多线程的基本使用

包装类 1.基本数据类型对应的引用数据类型(包装类) 1.概述:所谓的包装类就是基本类型对应的类(引用类型),我们需要将基本类型转成包装类,从而让基本类型具有类的特性(说白了,就是将基本类型的数据转成包装类,就可以使用包装类中的方法来操作此数据)2.为啥要学包装类:a.将来有…

springboot上传文件到后台指定文件夹

第一步&#xff0c;在application.yml做一下配置&#xff0c;预设下载目录 files:upload:path: D:/SpringBootItem/springboot/files/ 其中有用到hutool工具依赖&#xff0c;如下在pom.xml中添加依赖&#xff0c;也可以选择不添加&#xff0c;自己修改下Controller中的代码即可…

批量采集头条号文章的工具-让我们更好地辨别信息好坏

大家好&#xff0c;今天我想和大家聊一聊一个在互联网时代备受瞩目的话题&#xff0c;那就是批量采集头条号的文章。作为一个热衷于信息获取和分享的人&#xff0c;我深知这一领域的挑战和机遇。 让我们来谈谈批量采集头条号的文章所面临的挑战。随着互联网的迅猛发展&#xff…

亚马逊API接口解析,实现获得AMAZON商品详情

要解析亚马逊API接口并实现获取亚马逊商品详情&#xff0c;你需要按照以下步骤进行操作&#xff1a; 了解亚马逊开发者中心&#xff1a;访问亚马逊开发者中心&#xff0c;并了解相关的API文档、开发者指南和规定。注册开发者账号&#xff1a;在亚马逊开发者中心上注册一个开发…

Java“牵手”京东商品详情数据,京东商品详情接口,京东API接口申请指南

京东商品详情API是京东平台提供给开发者的应用程序编程接口&#xff0c;通过API可以获取京东平台上商品详情信息。 京东商品详情API可以获取到商品的标题、价格、销量、评价、详情页等信息。开发者在京东开放平台注册开发者账号&#xff0c;并获得访问API接口的密钥后&#xf…

代码随想录算法训练营day46|139.单词拆分|多重背包基础理论| 背包总结

139.单词拆分 力扣题目链接 给定一个非空字符串 s 和一个包含非空单词的列表 wordDict&#xff0c;判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明&#xff1a; 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1&#xff1a…

关于批量安装多个apk

for %i in (apks地址/*.apk); do adb install %i https://www.cnblogs.com/lihongtaoya/p/15084378.html adb install -r apks地址/1.apk && adb install -r apks地址/2.apk install-multi-package - 暂时nok https://adbshell.com/commands 最新版本的platform-tool…

Dinky上路之旅

1、部署flink集群 1.1、flink-conf.yaml cat > flink-conf.yaml << EOF jobmanager.rpc.address: boshi-146 jobmanager.rpc.port: 6123 jobmanager.bind-host: 0.0.0.0 jobmanager.memory.process.size: 1600m taskmanager.bind-host: 0.0.0.0 # 修改为本机ip tas…

今日宜分享:科技十足主页面的高校官网颜值排行榜

科技十足主页面的高校官网颜值排行榜 全国985名单&#xff08;最新&#xff09;1. 北京&#xff08;8所&#xff09;2. 上海&#xff08;4所&#xff09;3. 湖南&#xff08;3所&#xff09;4. 陕西&#xff08;3所&#xff09;5. 湖北&#xff08;2所&#xff09;6. 山东&…

postgresql如何关闭自动提交设置

问题&#xff1a;代码运行报错&#xff1a; Caused by: org.postgresql.util.PSQLException: Cannot commit when autoCommit is enabled. 解决方法&#xff1a;修改postgresql配置文件&#xff0c;关闭自动提价设置

机器学习:PCA(Principal Component Analysis主成分)降维

参考&#xff1a;PCA降维原理 操作步骤与优缺点_TranSad的博客-CSDN博客 PCA降维算法_偶尔努力翻身的咸鱼的博客-CSDN博客 需要提前了解的数学知识&#xff1a; 一、PCA的主要思想 PCA&#xff0c;即主成分分析方法&#xff0c;是一种使用最广泛的数据降维算法。PCA的主要思想…

centerOS连不上网解决办法

1、检查路由 route -n如果你缺失第一个路由&#xff0c;是肯定无法ping通外网的。 2、添加dns # vim /etc/resolv.conf nameserver 8.8.8.83、在/etc/resolv.conf文件添加路由 route add default gw 192.168.0.14、重启网卡 service network restart

KT142C-sop16语音芯片的4个IO口如何一对一触发播放_配置文件详细说明

目录 KT142C是一个提供串口的SOP16语音芯片&#xff0c;完美的集成了MP3的硬解码。内置330KByte的空间&#xff0c;最大支持330秒的语音长度&#xff0c;支持多段语音&#xff0c;支持直驱0.5W的扬声器无需外置功放 如上图&#xff0c;芯片有4个IO口可以一对一&#xff0c;详…