Vue.js事件处理器与表单控件绑定详解


Posted in Javascript onMarch 20, 2017

事件处理主要通过v-on这个指令来执行。

事件监听及方法处理

1.简单的可以直接内嵌在页面。

2.可以通过将方法定义在methods中,然后再v-on中执行

3.可以通过绑定给函数传递参数,还可以传递通过变量$event给函数传递原生DOM事件。

<div id="app-1">
 <button v-on:click="counter += 1">增加1</button>
 <p>这个按钮被点击了{{counter}}</p>
 <button v-on:click="great">great</button>
 <button @click="sya('hi')">say hi</button>
 <button @click="warn('form cannot be submit yet', $event)">submit</button>
</div>
<script type="text/javascript">
 var app1 = new Vue({
 el:'#app-1',
 data:{
 counter:0
 },
 methods:{
 great:function(event){
 alert('点击数目为'+ this.counter);
 alert(event.target.tagName);
 },
 sya:function(message){
 alert(message);
 },
 warn:function(msg,event){
 if(event) event.preventDefault();
 alert(msg);
 }
 }
 })
</script>

事件修饰器

Vue.js 为 v-on 提供了 事件修饰符。通过由点(.)表示的指令后缀来调用修饰符。

.stop
.prevent
.capture
.self

<div id="app2">
<!-- 阻止单击事件冒泡 -->
<a v-on:click.stop="doThis"></a>
<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a>
<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>
<!-- 添加事件侦听器时使用时间捕获模式 -->
<div v-on:click.capture="doThis">...</div>
<!-- 只当事件在该元素本身(而不是子元素)触发时触发回调 -->
<div v-on:click.self="doThat">...</div>
</div>

按键修饰符

在监听键盘事件时,我们经常需要监测常见的键值。 Vue 允许为 v-on 在监听键盘事件时添加按键修饰符:

<!-- 只有在 keyCode 是 13 时调用 vm.submit() -->
<input v-on:keyup.13="submit">

记住所有的 keyCode 比较困难,所以 Vue 为最常用的按键提供了别名:

<!-- 同上 -->
<input v-on:keyup.enter="submit">
<!-- 缩写语法 -->
<input @keyup.enter="submit">

全部的按键别名:

enter
tab
delete (捕获 “删除” 和 “退格” 键)
esc
space
up
down
left
right

可以通过全局 config.keyCodes 对象自定义按键修饰符别名:

// 可以使用 v-on:keyup.f1
Vue.config.keyCodes.f1 = 112

表单控件绑定

通过前面的一些学习,我们知道v-model在输入框中具有双向响应功能。但 v-model 本质上不过是语法糖,它负责监听用户的输入事件以更新数据,并特别处理一些极端的例子。

//文本
<input type="text" v-model="message" placeholder="edit it">
<p>this message is {{message}}</p>
<hr>
//多行文本
<span>Multiline message is:</span>
<p style="white-space: pre">{{ message }}</p>
<br>
<textarea v-model="message" placeholder="add multiple lines"></textarea>
<hr>
//复选框
<input type="checkbox" id="checkbox" v-model="checked">
<label for="checkbox">{{ checked }}</label>
<hr>
<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>
<br>
<span>Checked names数组: {{ checkedNames }}</span>
<hr>
//单选按钮
<input type="radio" id="one" value="One" v-model="picked">
<label for="one">One</label>
<br>
<input type="radio" id="two" value="Two" v-model="picked">
<label for="two">Two</label>
<br>
<span>Picked: {{ picked }}</span>
<hr>
//选择列表
<select v-model="selected">
 <option>A</option>
 <option>B</option>
 <option>C</option>
</select>
<span>Selected: {{ selected }}</span>
<hr>
<select v-model="mulselected" multiple>
 <option>A</option>
 <option>B</option>
 <option>C</option>
</select>
<br>
<span>Selected数组: {{ mulselected }}</span>

动态属性

<input
 type="checkbox"
 v-model="toggle"
 v-bind:true-value="a"
 v-bind:false-value="b">
<p>toggle的值为{{toggle}}</p>
<input type="radio" v-model="pick" v-bind:value="a">
<select v-model="selected">
 <!-- 内联对象字面量 -->
 <option v-bind:value="{ number: 123 }">123</option>
</select>

修饰符

lay:在改变后才触发

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

number:将输出字符串转为Number类型

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

trim:自动过滤用户输入的首尾空格

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
图片格式的JavaScript和CSS速查手册
Aug 20 Javascript
JS 对象介绍
Jan 20 Javascript
JQuery index()方法使用代码
Jun 02 Javascript
Js event事件在IE、FF兼容性问题
Jan 01 Javascript
js控制滚动条缓慢滚动到顶部实现代码
Mar 20 Javascript
javascript使用isNaN()函数判断变量是否为数字
Sep 21 Javascript
jquery右下角弹出提示框示例代码
Oct 08 Javascript
AngularJS的$location使用方法详解
Oct 19 Javascript
JS实现读取xml内容并输出到div中的方法示例
Apr 19 Javascript
JS实现可切换图片的幻灯切换效果示例
May 24 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
May 18 Javascript
Vue使用鼠标在Canvas上绘制矩形
Dec 24 Vue.js
Vue.js基础学习之class与样式绑定
Mar 20 #Javascript
详解Vue中添加过渡效果
Mar 20 #Javascript
JS模拟实现ECMAScript5新增的数组方法
Mar 20 #Javascript
JavaScript 过滤关键字
Mar 20 #Javascript
Extjs表单输入框异步校验的插件实现方法
Mar 20 #Javascript
js实现鼠标拖动功能
Mar 20 #Javascript
基于vue2的table分页组件实现方法
Mar 20 #Javascript
You might like
使用php来实现网络服务
2009/09/15 PHP
PHP判断是否有Get参数的方法
2014/05/05 PHP
php数组冒泡排序算法实例
2016/05/06 PHP
PHP封装的数据库保存session功能类
2016/07/11 PHP
php多文件打包下载的实例代码
2017/07/12 PHP
PDO::errorCode讲解
2019/01/28 PHP
javascript判断非数字的简单例子
2013/07/18 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
2013/10/14 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
2016/08/05 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
JS控制FileUpload的上传文件类型实例代码
2016/10/07 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
JavaScript实现图片合成下载的示例
2020/11/19 Javascript
[02:49]2018DOTA2亚洲邀请赛主赛事决赛日战况回顾 Mineski鏖战5局夺得辉耀
2018/04/10 DOTA
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
利用Python实现原创工具的Logo与Help
2018/12/03 Python
python可视化实现代码
2019/01/15 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
django-allauth入门学习和使用详解
2019/07/03 Python
python中entry用法讲解
2020/12/04 Python
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
WoolOvers澳洲官方网站:英国针织服装公司
2018/05/13 全球购物
ZINVO手表官网:男士和女士手表
2019/03/10 全球购物
htmlentities() 和 htmlspecialchars()有什么区别
2015/07/01 面试题
大学学习生活感言
2014/01/18 职场文书
开办大学饮食联盟创业计划书
2014/01/29 职场文书
学习心理学的体会
2014/11/07 职场文书
教师求职自荐信
2015/03/26 职场文书
2015年小班保育员工作总结
2015/05/27 职场文书
新闻发布会新闻稿
2015/07/17 职场文书
小学新课改心得体会
2016/01/22 职场文书