vue3-表单输入绑定

表单输入绑定

获取表单输入的值方式:

  1. 手动连接值绑定和更改事件监听器

  2. v-model 指令 (常用)

<script lang="ts" setup>
import { ref } from "vue"
// 定义个变量接收输入的内容:
const text = ref("111")
const text2 = ref("222")

</script>

<template>
    <div class="container">
        <section>
            <!-- 输入内容通过事件绑定值: -->
            <p>默认的value是 111</p>
            <input :value="text" @input="event => text = event?.target?.value" />
            <div>这是输入的值{{ text }}</div>
        </section>

        <section>
            <!-- v-model 指令帮我们简化了这一步骤 -->
            <p>默认的value是 222</p>
            <input v-model="text2" value="888">
            <div>这是输入的值{{ text2 }}</div>
        </section>

    </div>
</template>

<style lang="scss" scoped>
.container {
    section {
        margin-bottom: 20px;
    }
}
</style>

示例:

v-model 还可以用于各种不同类型的输入元素。它会根据所使用的元素自动使用对应的 DOM 属性和事件组合

表单类型绑定属性值绑定事件
inputvalueinput
textareavalueinput
checkboxcheckedchange
radiochecked

change

selectvaluechange

v-model 会忽略任何表单元素上初始的 value、checked 或 selected attribute。它将始终将当前绑定的 JavaScript 状态视为数据的正确来源。

比如下面 888 值不显示 无效的

<input v-model="text2" value="888">

表单基本用法

  1. 文本

  2. 多行文本

  3. 复选框

  4. 单选按钮

  5. 选择器

<script lang="ts" setup>
import { ref } from "vue"
// 定义个变量接收输入的内容:
const f1 = ref("f1的默认值")
const f2 = ref("f2的默认值")
const f3 = ref(true)
const f4 = ref([])
const f5 = ref('女')
const f6 = ref('深圳')

</script>

<template>
    <div class="container">
        <section>
            <p>input输入框</p>
            <p>f1的值是: {{ f1 }}</p>
            <input v-model="f1" placeholder="请输入" />
        </section>

        <section>
            <p>多行文本</p>
            <!-- 错误 -->
            <!-- <textarea>{{ text }}</textarea> -->
            <p>f2的值是: {{ f2 }}</p>
            <!-- 正确 -->
            <textarea v-model="f2" rows="3"></textarea>
        </section>

        <section>
            <p>复选框</p>
            <p>单个</p>
            <input type="checkbox" id="checkbox" v-model="f3" /> <label for="checkbox">统一协议</label>
            <br>
            <label for="checkbox">f3的值是:{{ f3 }}</label>
            <br>
            <br>
            <p>多个</p>
            <input type="checkbox" id="h1" value="篮球" v-model="f4" /> <label for="h1">篮球</label>
            <input type="checkbox" id="h2" value="足球" v-model="f4" /> <label for="h2">足球</label>
            <input type="checkbox" id="h3" value="排球" v-model="f4" /> <label for="h3">兵乓球</label>
            <br>
            <label for="checkbox">f4的值是:{{ f4 }}</label>
        </section>

        <section>
            <p>单选按钮</p>
            <p>f5的值是: {{ f5 }}</p>
            <input type="radio" id="one" value="男" v-model="f5" />
            <label for="one">男</label>

            <input type="radio" id="two" value="女" v-model="f5" />
            <label for="two">女</label>
        </section>

        <section>
            选择器
            <div>f6的值是 : {{ f6 }}</div>

            <select v-model="f6" multiple>
                <option disabled value="">请选择一个你喜欢的城市</option>
                <option>北京</option>
                <option>上海</option>
                <option>深圳</option>
                <option>广州</option>
            </select>

        </section>

    </div>
</template>

<style lang="scss" scoped>
.container {
    section {
        margin-bottom: 20px;
    }

    label {
        margin-right: 10px;
    }

    select {
        margin: 20px;
        padding: 20px;
    }
}
</style>

示例:

复选框 true-value 和 false-value 属性

<input
  type="checkbox"
  v-model="toggle"
  true-value="yes"
  false-value="no" />

  // 动态渲染
<input
  type="checkbox"
  v-model="toggle"
  :true-value="dynamicTrueValue"
  :false-value="dynamicFalseValue" />

true-value 和 false-value 是 Vue 特有的 attributes,仅支持和 v-model 配套使用。

  • 这里 toggle 属性的值会在选中时被设为 'yes',取消选择时设为 'no'。你同样可以通过 v-bind 将其绑定为其他动态值:

选择器,非字符串类型的值绑定

...
...

const selected = ref({ number: 111 })
...
...

<section>
     <p>selected 的值是:{{ selected }}</p>
     <select v-model="selected">
         <!-- 内联对象字面量 -->
         <option :value="{ number: 111 }">111</option>
         <option :value="{ number: 222 }">222</option>
     </select>
 </section>

示例:

修饰符

  • .lazy 每次 change 事件后更新数据 (节流)

  • .number 用户输入自动转换为数字

  • .trim 自动去除用户输入内容中两端的空格

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

<input v-model.number="age" />

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

源码:Spring常规Bean创建过程

Bean创建过程&#xff1a; 一、版本 5.3.10二、学习内容 Bean创建过程源码三、Bean生命周期 时间轴地址&#xff1a;点击 四、bean创建过程脑图总结 脑图地址&#xff1a;点击 五、源码过程 说明&#xff1a; bean创建入口一般都是通过getBean(xxx);方法进入的&#xf…

关于php8的数据类型转换

目录 1、数据类型介绍 1.1 简单数据类型&#xff1a; 1.2 复合数据类型&#xff1a; 1.3 特殊数据类型&#xff1a; 2、数据类型转换 2.1 自动转换&#xff1a; 2.2 强制&#xff08;手动&#xff09;转换&#xff1a; 3、验证数据类型途径 &#xff08;1&#xff09;var…

户外机器人区域覆盖算法仿真测试平台设计与实现(预告)

要求14周完成。一定要熟练掌握人工智能工具的使用。 起伏地形环境多机器人编队运动控制与路径规划研究_2016年中小结-CSDN博客 简要版本 随着机器人技术的快速发展&#xff0c;户外机器人在农业、环境监测、搜索与救援等领域的应用日益广泛。为了实现高效、准确的区域覆盖&…

[flutter]GIF速度极快问题的两种解决方法

原因&#xff1a; 当GIF图没有设置播放间隔时间时&#xff0c;电脑上会默认间隔0.1s&#xff0c;而flutter默认0s。 解决方法一&#xff1a; 将图片改为webp格式。 解决方法二&#xff1a; 为图片设置帧频率&#xff0c;添加播放间隔。例如可以使用GIF依赖组件设置每秒运行…

esp ble app_register注册报错“Register with GATT stack failed”的问题解决

有规定注册app的最大值&#xff0c;默认是8个&#xff0c;减去固定的gatts和gattc就只剩6个&#xff0c;修改成你需要的值就行。 文件路径在esp-idf\components\bt\host\bluedroid\common\include\common\bt_target.h

飞书修改不了名称?飞书如何修改名称,修改昵称

飞书如何修改名称 点击编辑信息 在这里修改姓名就可以啦

计算机找不到msvcr100.dll无法继续执行的5种解决方法,实测有效

“msvcr100.dll文件丢失这一问题&#xff0c;时常给计算机用户带来诸多困扰与不便。作为Microsoft Visual C运行库中的一个关键动态链接库文件&#xff0c;msvcr100.dll在系统和应用程序的正常运行中扮演着不可或缺的角色。一旦该文件发生丢失或损坏&#xff0c;可能会引发一系…

鸿蒙开发之状态管理

State 组件内状态 State装饰的变量&#xff0c;会和自定义组件的渲染绑定起来。当状态改变时&#xff0c;UI会发生对应的渲染改变。在状态变量相关装饰器中&#xff0c;State是最基础的&#xff0c;使变量拥有状态属性的装饰器&#xff0c;它也是大部分状态变量的数据源。 装…

OpenGL ES之深入解析图像的腐蚀、膨胀、边缘检测处理

一、图像腐蚀(Image Erosion) 图像腐蚀用于缩小或消除图像中物体的边界,主要用于去除图像中的小细节、噪声或不规则物体:实现图像腐蚀的片段着色器代码,基本原理就是寻找附近的最小 color 作为输出:precision highp float; varying highp vec2 vTextureCoord; uniform lo…

高速CAN总线 A B节点竞争总线时 电压分析

CAN收发器放大图 前4步简化过程同<<高速CAN总线 A节点发送 B节点接收 电压分析>> A B节点同时发送显性电平 A B节点同时发送显性电平时 初步简化后如下图所示: 图① A B 节点同时发送显性电平, 则 4 个三极管全部导通, 假定三极管压降0.5V 则电路简化如下图.(导…

2024年美国各州即将生效的新隐私保护法(上)

2024年美国各州即将生效的新隐私保护法&#xff08;上&#xff09; 文章目录 2024年美国各州即将生效的新隐私保护法&#xff08;上&#xff09;前言一、2023年隐私保护法开始生效的五个州二、2023年通过了新的隐私保护法的八个州三、2024年确定截止的州及法律法规&#xff08;…

项目管理工具——禅道在企业内部的使用

目录 一、禅道的下载安装 1.1 禅道官网 1.2 安装步骤 二、禅道启动 2.1 访问禅道 三、禅道的使用 3.1 公司信息编辑 3.2 admin管理组织结构 3.2.1 岗位母部门添加 3.2.2 岗位子部门添加 3.2.3 用户新增 3.2.4 用户职位编辑 3.3 产品经理使用禅道 3.3.1 添加产品…

2024-01-17(SpringCloud)

1.使用openFeign的itemClient接口去做远程调用其他微服务中的接口。但我们直接使用了itemClient接口&#xff0c;而不是该接口的实现类&#xff0c;说明我们是使用该接口的代理对象帮我们做远程调用的。这个代理对象是invocationHandler来生成的。 2.openFeign底层发起远程调用…

Mybatis-Plus基础学习

目录 第一章、快速了解mybatis-plus1.1&#xff09;相关概念介绍1.2&#xff09;为什么使用MyBatis-Plus1.3&#xff09;学习过程中的疑问 第二章、 SpringBoot集成MyBatis-Plus2.1&#xff09;idea快速创建spring boot项目2.2&#xff09;setting里查看编译器2.3&#xff09;添…

K8s调试积累

文章目录 一、K8S 集群服务访问失败&#xff1f;二、K8S 集群服务访问失败&#xff1f;三、K8S 集群服务暴露失败&#xff1f;四、外网无法访问 K8S 集群提供的服务&#xff1f;五、pod 状态为 ErrImagePull&#xff1f;六、探测存活 pod 状态为 CrashLoopBackOff&#xff1f;七…

阿里云ECS使用docke搭建redis服务

目录 1.确保正确安装好docker 2.安装redis镜像 3.创建容器设置端口映射 1.确保正确安装好docker 安装教程&#xff1a; 阿里云ECS(CentOS镜像)安装docker-CSDN博客https://blog.csdn.net/qq_62262918/article/details/135686614?spm1001.2014.3001.5501 2.安装redis镜像…

94.乐理基础-记号篇-装饰音记号(二)助音的四种类型

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;93.乐理基础-记号篇-装饰音记号&#xff08;一&#xff09;级进、跳进、经过音、辅助音-CSDN博客 当前写的助音是扩展的辅助音的内容&#xff0c;所以要先看上一个内容 助音的四种类型&#xff1a;下方的三个辅助…

网卡:初始化,frame组装,网卡处理电信号过程

ip模块中存储的是一堆数字信号&#xff0c;网卡内部会把数字信号转换成电信号或者光信号在网线中传输。 网卡只是一个硬件&#xff0c;需要驱动程序去操作他&#xff0c;计算机中已经把主流网卡的驱动程序&#xff08;不只是网卡的&#xff0c;还有鼠标&#xff0c;键盘这些硬件…

【opencv】python实现人脸检测和识别训练

人脸识别 OpenCV 中的人脸识别通常基于哈尔特征分类器&#xff08;Haar Cascade Classifier&#xff09;进行。以下是 OpenCV 人脸识别的基本原理&#xff1a; Haar Cascade Classifier&#xff1a; 特征分类器&#xff1a;Haar 特征是一种基于矩形区域的特征&#xff0c;可以…

2024--Django平台开发-订单项目管理用户认证+动态菜单+权限控制(十三)

day13 订单管理项目开发 1.表结构设计 1.1 abstract类 from django.db import modelsclass ActiveBaseModel(models.Model):active models.SmallIntegerField(verbose_name"状态", default1, choices((1, "激活"), (0, "删除"),))class Meta:…