Vue 表单输入绑定

项目前导 学习笔记

一、表单输入绑定


        v-model 指定可以实现表单值与属性的双向绑定。即表单元素中更改了值会自动的更新属性中的值,属性中的值更新了会自动更新表单中的值。


1.1、绑定的属性和事件

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

                1. texttextarea 元素使用 value 属性和 input 事件。

                2. checkboxradio 使用 checked 属性和 change 事件。

                3. select 字段将 value 作为 prop 并将 change 作为事件。



1.2、表单元素绑定

        v-modelv-model:value 的缩写,改变 input 标签中的值可以改变下面 data 的属性。

  1. input 绑定
	<input v-model="message" placeholder="请输入...">
	<input v-model:value="message" placeholder="请输入...">
	<p>输入的内容是:{{ message }}</p>
	
	
	new Vue({
	  el: '#app',
	  data: {
	    message: ""
	  }
	})

  1. textarea 文本域 绑定
	<textarea v-model="message" cols="30" rows="5" placeholder="请输入多行内容..."></textarea><br><br>
	<span>输入的内容是:</span>
	<p style="white-space: pre-line;">{{ message }}</p>

  1. checkbox 复选 绑定
	<div id='app'>
		<input type="checkbox"  value="Jack" v-model="checkedNames">
		<label for="jack">Jack</label>
		<input type="checkbox"  value="John" v-model="checkedNames">
		<label for="john">John</label>
		<input type="checkbox"  value="Mike" v-model="checkedNames">
		<label for="mike">Mike</label>
		<br><br>
		<span>Checked names: {{ checkedNames }}</span><br>
	</div>


	new Vue({
		el: '#app',
		data: {
		  //  因为要存放选取的数据, 所以应该用数组
		  //  存储的是 value 属性的值
		  checkedNames: []
		}
	})

  1. radio 单选 绑定
	<div id="app">
		<input type="radio" value="" v-model="gender">
	    <label></label>
	    <br>
	    <input type="radio" value="" v-model="gender">
	    <label></label>
	    <br>
	    <span>Picked: {{ gender }}</span>
	</div>
	
	
	new Vue({
		el: '#app',
		data: {
		  gender: ''
		}
	})

  1. select 下拉 绑定
	<div id="app">
	    <select v-model="selected">
	    	<!--  disabled 表示不可选  -->
	        <option disabled value="">请选择</option>
	        <!--  如果有 value 值, 则选择的就是 value 值  -->
	        <option value="1">A</option>
	        <option>B</option>
	        <option>C</option>
	    </select><br><br>
	    <span>Selected: {{ selected }}</span><br>
	</div>
	
	
	new Vue({
		el:'#app',
		data: {
		  selected: ''
		}
	})



1.3、修饰符

  1. .lazy

            在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步(除了上述输入法组合文字时),你可以添加 lazy 修饰符,从而转变为使用 change 事件进行同步(输入完成,鼠标点击输入框外任意位置):
	<!-- 在 "change" 时而非 "input" 时更新, 光标移除 input 输入框的时候 -->
	<input type="text" v-model:value.lazy="message">
	<!-- 简写 -->
	<input v-model.lazy="message" >
	
	
	new Vue({
		el: '#app',
		data: {
		  message: ''
		}
	})

  1. .number

            如果想用户的输入值只能为数值类型,可以给 v-model 添加 number 修饰符。这通常很有用,因为即使在 type="number" 时,HTML 输入元素的值也总会返回字符串。如果这个值无法被 parseFloat() 解析,则会返回原始的值。
	<input v-model.number="message" type="number">

  1. .trim

            如果要自动过滤用户输入的首尾空白字符,可以给 v-model 添加 trim 修饰符。
	<input v-model.trim="message">
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基本的 Vue 表单输入验证代码示例: 模板: ``` <template> <div> <label for="name">Name:</label> <input type="text" id="name" v-model="name" /> <div v-if="nameError" class="error">{{ nameError }}</div> <label for="email">Email:</label> <input type="email" id="email" v-model="email" /> <div v-if="emailError" class="error">{{ emailError }}</div> <button @click="submitForm">Submit</button> </div> </template> ``` 脚本: ``` <script> export default { data() { return { name: "", email: "", nameError: "", emailError: "" }; }, methods: { submitForm() { this.nameError = ""; this.emailError = ""; if (!this.name) { this.nameError = "Please enter your name."; } if (!this.email) { this.emailError = "Please enter your email."; } else if (!this.validEmail(this.email)) { this.emailError = "Please enter a valid email."; } if (!this.nameError && !this.emailError) { // Form is valid, submit it console.log("Submit form with name:", this.name, "and email:", this.email); } }, validEmail(email) { // Check if email is valid // Regex source: https://emailregex.com/ const regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; return regex.test(email); } } }; </script> ``` 样式: ``` <style> .error { color: red; } </style> ``` 在上面的示例中,我们有一个包含姓名和电子邮件输入表单,并且在提交表单之前对用户输入进行验证。我们使用 `v-model` 指令来绑定表单输入值到 Vue 实例中的 `name` 和 `email` 数据属性。我们还定义了 `nameError` 和 `emailError` 数据属性来保存任何验证错误消息。 在 `submitForm` 方法中,我们首先清除任何现有的错误消息。然后,我们验证姓名和电子邮件输入是否为空,并对电子邮件进行基本的格式验证。最后,如果表单验证通过,我们可以提交表单。 在 `validEmail` 方法中,我们使用正则表达式来验证电子邮件地址的格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值