vue3表单输入绑定

news2024/11/26 18:36:59

初识表单输入绑定

  • vue3可以帮助我们将vue定义的变量绑定到html表单元素上,并且监听到html表单元素修改值时,会将对应的vue定义的变量修改。

    <!-- 将vue3定义的text绑定给inut元素, 当input元素发生input输入事件时, 将修改vue3定义的text -->
    <input  :value="text" @input="event => text = event.target.value">
    

    v-model 指令帮我们简化了这一步骤(与上面完全一样的效果):

    <input v-model="text">
    
  • v-model 还可以用于各种不同类型的输入

    • 文本类型的 <input> 和 <textarea> 元素会绑定 value property 并侦听 input 事件
    • <input type=“checkbox”> 和 <input type=“radio”> 会绑定 checked property 并侦听 change 事件
    • <select> 会绑定 value property 并侦听 change 事件
  • 注意:v-model 会忽略任何表单元素上初始的 value、checked 或 selected attribute。它将始终将当前绑定的 JavaScript 状态视为数据的正确来源。

  • 这些html原生的表单元素 和 v-model之间 实现了,把vue定义的响应式变量绑定给了表单元素的值,同时,通过监听对应表单的对应事件(为了监测到修改的值),获取到修改后的值,把值更新到vue定义的响应式变量中,这样就实现了双向绑定。自定义组件如果要支持v-model,那么也需要这样去做这2部分

基本用法

input

在这里插入图片描述

<div class="main-box">
    <p>Message is: {{ msg }}</p>
    <input v-model="msg" placeholder="edit me" />
</div>

<script setup>
    import { ref,reactive } from 'vue'
    let msg = ref('a')
</script>

textarea

在这里插入图片描述
注意:要加上下面的样式,才有换行效果哦

<div class="main-box">
    <p style="white-space: pre-line;">{{ msg }}</p>
    <textarea v-model="msg"></textarea>
</div>

<script setup>
    import { ref,reactive } from 'vue'
    let msg = ref('a')
</script>

checkbox

单个复选框

在这里插入图片描述
单个的复选框,绑定的是布尔类型值

<div class="main-box">
    <input type="checkbox" id="checkbox" v-model="checked" />
    <label for="checkbox">{{ checked }}</label>
</div>

<script setup>
	import { ref,reactive } from 'vue'
	let checked = ref(true)
</script>

多个复选框

在这里插入图片描述
多个复选框绑定的是同一个数组或集合的值

<div class="main-box">
    <div>Checked names: {{ checkedNames }}</div>

    <input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
    <label for="jack">Jack</label>

    <input type="checkbox" id="john" value="John" v-model="checkedNames">
    <label for="john">John</label>

    <input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
    <label for="mike">Mike</label>
</div>

<script setup>
	import { ref,reactive } from 'vue'
	let checkedNames = ref(['Mike'])
</script>

radio

在这里插入图片描述

<div class="main-box">
    <div>Picked: {{ picked }}</div>

    <input type="radio" id="one" value="One" v-model="picked" />
    <label for="one">One</label>

    <input type="radio" id="two" value="Two" v-model="picked" />
    <label for="two">Two</label>
</div>

<script setup>
	import { ref,reactive } from 'vue'
	let picked = ref('Two')
</script>

select

单选

在这里插入图片描述

  • option中里面没有value值,但还是默认选择了B
<div class="main-box">
    <div>Selected: {{ selected }}</div>

    <select v-model="selected">
	    <option disabled value="">Please select one</option>
	    <option>A</option>
	    <option>B</option>
	    <option>C</option>
    </select>
    
</div>

<script setup>
    import { ref,reactive } from 'vue'
    let selected = ref('B')
</script>

多选

在这里插入图片描述

<div class="main-box">

    <div>Selected: {{ selected }}</div>

    <select v-model="selected" multiple>
    
        <option v-for="option in options" 
        	    :value="option.value" 
        	    :key="option.value">
            {{ option.text }}
        </option>
        
    </select>
    
</div>

<script setup>
	import { ref, reactive } from 'vue'
	
	let selected = ref('A')
	
	let options = ref([
	    { text: 'One', value: 'A' },
	    { text: 'Two', value: 'B' },
	    { text: 'Three', value: 'C' }
	])
	
</script>

值绑定

通过以上基本用法,我们发现:对于单选按钮,复选框和选择器选项,v-model 绑定的值通常是静态的字符串 (或者对复选框是布尔值),但有的时候,我们希望表单元素绑定的值是组件实例上的动态数据。这可以通过使用 v-bind 来实现。此外,使用 v-bind 还使我们可以将选项值绑定为非字符串的数据类型。

复选框

在这里插入图片描述
单个复选框默认绑定的是布尔值,可以通过vue特有的 attributes,来绑定值。甚至可以使用v-bind绑定组件实例身上的动态的值

<div class="main-box">
    <input 	type="checkbox" 
    		v-model="toggle" 
    		true-value="yes" 
    		:false-value="no" />
    {{toggle}}
</div>

<script setup>
	import { ref, reactive } from 'vue'
	let no = ref('nonono~')
</script>

单选框

在这里插入图片描述

<div class="main-box">
    <p>{{ pick }}</p>
    <input type="radio" v-model="pick" :value="first" />1
    <input type="radio" v-model="pick" :value="second" />2
</div>

<script setup>

	import { ref, reactive } from 'vue'
	
	let first = ref('第一')
	let second = ref('第二')
	
	let pick = ref('')

</script>

选择器

在这里插入图片描述

<div class="main-box">

    <p>{{ selected }}</p>
    
    <select v-model="selected">
        <!-- 绑定 内联对象字面量 -->
        <option :value="{ number: 123 }">123</option>
    </select>
    
</div>

<script setup>
    import { ref, reactive } from 'vue'
    let selected = ref()
</script>

修饰符

.lazy

在这里插入图片描述

当输入完,并且input焦点时,即触发了change事件,然后msg才会修改。而不是原来的:边输入,它会实时的边改

<div class="main-box">

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

<script setup>
    import { ref, reactive } from 'vue'
    let msg = ref()
</script>

.number

  • 如果你想让用户输入自动转换为数字,可以在 v-model 后添加 .number 修饰符来管理输入
  • number 修饰符会在输入框有 type=“number” 时自动启用
<div class="main-box">
	<input v-model.number="age" />
</div>

<script setup>
    import { ref, reactive } from 'vue'
    let age = ref()
</script>

.trim

如果想要默认自动去除用户输入内容中两端的空格,可以在 v-model 后添加 .trim 修饰符

<div class="main-box">
	<input v-model.trim="msg" />
</div>

<script setup>
    import { ref, reactive } from 'vue'
    let msg= ref()
</script>

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

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

相关文章

Linux常用操作命令

目录 一. Linux命令格式 二. 文件目录操作命令 文件目录操作命令 ls 文件目录操作命令 cd 文件目录操作命令 cat 文件目录操作命令 more 文件目录操作命令 tail 文件目录操作命令 mkdir 文件目录操作命令 rmdir 文件目录操作命令 rm 三. 拷贝移动命令 拷贝移动命令 …

STM32 学习笔记_6 定时器中断(上)

TIM 定时器是功能最强大&#xff0c;内容最复杂的32结构。 之前51用过的功能&#xff0c;定时产生中断。输出比较&#xff0c;常用于产生 PWM 波形&#xff0c;驱动电机等。输入捕获&#xff0c;测量方波频率。编码器&#xff0c;读取正交编码器的波形。 最大定时时间&#…

关于repeater录制的流量子调用的identity中带有~S的情况

前段时间同事问我&#xff0c;我们录制的流量中&#xff0c;尤其是dubbo的子调用显示经常他的末尾会带上一个小尾巴这个是什么意思呢&#xff0c;其实之前我没有太在意这个事情&#xff0c;只是同事这么疑问了&#xff0c;确实激起了好奇心&#xff0c;所以就差了下 到底是什么…

HTML(四) -- 多媒体设计

目录 1. 视频标签 2. 音频标签 3. 资源标签&#xff08;定义媒介资源 &#xff09; 1. 视频标签 属性值描述autoplayautoplay如果出现该属性&#xff0c;则视频在就绪后马上播放。controlscontrols表示添加标准的视频控制界面&#xff0c;包括播放、暂停、快进、音量等…

交叉熵损失函数与参数更新计算实例(节点分类为例)

交叉熵损失与参数更新 数据准备 对于下面这样一个图网络网络&#xff1a; 假如我们得到了节点i的嵌入表示 z i z_i zi​数据如下&#xff1a; i d , x 0 , x 1 , x 2 , x 3 1 , 0.5 , 0.6 , 0.7 , 0.8 2 , 0.3 , 0.8 , 0.3 , 0.4 3 , 0.7 , 0.9 , 0.6 , 0.9 4 , 0.2 , 0.1…

【计算几何】判断一条线段和一段圆弧是否相交 C++代码实现

文章目录 一、前言二、线段与圆弧的代码表示2.1 线段代码表示2.2 圆弧代码表示 三、实现思路及数学推导3.1 第一步&#xff08;粗略判断&#xff09;3.2 第二步3.3 第三步 四、完整代码五、效果展示 一、前言 最近做项目&#xff0c;需要判断一条线段是否和一段圆弧相交&#…

利用Ad Hoc传感器网络上的局部信息组织全球坐标系(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 知道通信网络中节点的地理位置通常是有用的&#xff0c;但在每个节点上添加GPS接收器或其他复杂的传感器可能会很昂贵。 本文…

系统集成项目管理工程师 笔记(第14章 项目采购管理)

文章目录 采购管理包括如下几个过程14.2 编制采购计划 4621&#xff09;采购管理计划2&#xff09;采购工作说明书3&#xff09;采购文件14.2.3 工作说明书&#xff08;SOW&#xff09; 14.3 实施采购 47414.3.2 实施采购的方法和技术 476&#xff08;1&#xff09;投标人会议&…

深入篇【C++】类与对象:构造函数+析构函数

深入篇【C】类与对象&#xff1a;构造函数析构函数 ①.构造函数Ⅰ.概念Ⅱ.特性1.函数名和类型相同。2.无返回值&#xff0c;也不用写void。3.自动调用对应的构造函数。4.构造函数可重载5.编译器的无参构造6.编译器的无参构造特性7.声明时可缺省8.构造函数的调用9.默认构造函数 …

进程控制下篇

进程控制下篇 1.进程创建 1.1认识fork / vfork 在linux中fork函数时非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程 #include<unistd.h> int main() {pid_t i fork;return 0; }当前进程调用fork&#xff0c;…

【VScode】的 安装--配置--使用(中文插件下载不了怎么办?)

&#x1f58a;作者 : D. Star. &#x1f4d8;专栏 : VScode &#x1f606;今日分享 : ”兰因絮果“是世间定律吗&#xff1f; 一段美好爱情开始时你侬我侬、缠缠绵绵&#xff0c;最后却以相看两厌结尾&#xff0c;让人唏嘘。清代词人纳兰容若于是咏出「人生若只如初见&#xff…

后端程序员的前端必备【Vue】 -01 Vue入门

Vue概述与基础入门 1 Vue简介1.1 简介1.2 MVVM 模式的实现者——双向数据绑定模式1.3 其它 MVVM 实现者1.4 为什么要使用 Vue.js1.5 Vue.js 的两大核心要素1.5.1 数据驱动![请添加图片描述](https://img-blog.csdnimg.cn/963aca7d7a4447009a23f6900fdd7ee1.png)1.5.2 组件化 2 …

系统集成项目管理工程师 笔记(第13章 项目合同管理)

文章目录 13.2.1 按信息系统 范围 划分的合同分类 4451、总承包合同2、单项工程承包合同3、分包合同 13.2.2 按项目 付款方式 划分的合同分类 4461、总价合同2、成本补偿合同&#xff08;卖方有利&#xff09;3、工料合同 13.3.1 项目合同的内容 44713.3.2 项目合同签订的注意事…

进程地址空间与页表方面知识点(缺页中断及写时拷贝部分原理)

谢谢阅读&#xff0c;如有错误请大佬留言&#xff01;&#xff01; 目录 谢谢阅读&#xff0c;如有错误请大佬留言&#xff01;&#xff01; 抛出总结 开始介绍 发现问题 进程地址空间&#xff08;虚拟地址&#xff09; 页表 物理内存与进程地址空间映射 缺页中断基本…

Linux操作系统之mysql数据库简介

文章目录 数据库的介绍有关数据库的操作有关数据表的操作C语言访问mysql事务视图索引 数据库的介绍 mysql数据库模型&#xff1a; 关系型数据库与非关系型数据库&#xff1a; 关系型数据库&#xff1a;指采用了关系模型来组织数据的数据库&#xff0c;关系模型就是指二维表格模…

【PCL】—— 点云滤波

文章目录 直通滤波降采样使用统计滤波&#xff08;statisticalOutlierRemoval&#xff09;移除离群点使用条件滤波&#xff08;ConditionalRemoval&#xff09;或 半径滤波&#xff08;RadiusOutlinerRemoval&#xff09;移除离群点 在获取点云数据时&#xff0c;由于设备精度&…

Vue(组件化编程:非单文件组件、单文件组件)

一、组件化编程 1. 对比传统编写与组件化编程&#xff08;下面两个解释图对比可以直观了解&#xff09; 传统组件编写&#xff1a;不同的HTML引入不同的样式和行为文件 组件方式编写&#xff1a;组件单独&#xff0c;复用率高&#xff08;前提组件拆分十分细致&#xff09; 理…

【Fluent】Error: Model information is incompatible with incoming mesh.

一、问题背景 在原有workbench数据文件上&#xff0c;修改几何数据&#xff0c;然后重新划分网格&#xff0c;在更新网格后&#xff0c;workbench就弹出错误Error&#xff01; Model information is incompatible with incoming mesh. 因为当时并不影响我打开fluent求解器&am…

C语言数组介绍和用法

文章目录 前言一、数组的定义二、数组的大小三、数组的访问方法四、使用for循环遍历数组五、数组地址的访问方法六、二维数组七、二维数组的遍历总结 前言 本篇文章将带大家学习C语言中的数组&#xff0c;数组在C语言中是一个比较重要的点&#xff0c;大家需要好好理解并多加使…

Linux Shell 介绍及常用命令汇总

文章目录 Part.I shell 简介Chap.I 概念汇编Chap.II 命令概览 Part.II shell 常用命令大全Chap.I 关于文件和目录Chap.II 关于磁盘和内存Chap.III 关于进程调度 Reference Part.I shell 简介 Chap.I 概念汇编 下面是一些概念 shell 与 bash 的区别与联系&#xff1a;bash 是 b…