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中的对象化编程
Jan 16 Javascript
jquery ajax提交表单数据的两种方式
Nov 24 Javascript
避免 showModalDialog 弹出新窗体的原因分析
May 31 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
Oct 10 Javascript
获取客户端电脑日期时间js代码(jquery)
Sep 12 Javascript
jQuery实现单击和鼠标感应事件
Feb 01 Javascript
基于jQuery实现表格的查看修改删除
Aug 01 Javascript
pc加载更多功能和移动端下拉刷新加载数据
Nov 07 Javascript
Bootstrap表格制作代码
Mar 17 Javascript
JS判断一个数是否是水仙花数
Jun 11 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
Sep 19 Javascript
何时/使用 Vue3 render 函数的教程详解
Jul 25 Javascript
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封装CURL扩展类实例
2015/07/28 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
jquery.form.js用法之清空form的方法
2014/03/07 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
JavaScript实现的购物车效果可以运用在好多地方
2014/05/09 Javascript
如何防止回车(enter)键提交表单
2014/05/11 Javascript
javascript获取select值的方法分析
2015/07/02 Javascript
jquery实现红色竖向多级向右展开的导航菜单效果
2015/08/31 Javascript
第四篇Bootstrap网格系统偏移列和嵌套列
2016/06/21 Javascript
详解vue-router基本使用
2017/04/18 Javascript
详解webpack-dev-server使用http-proxy解决跨域问题
2018/01/13 Javascript
vue如何根据网站路由判断页面主题色详解
2018/11/02 Javascript
前端面试知识点目录一览
2019/04/15 Javascript
JavaScript仿京东秒杀倒计时
2020/03/17 Javascript
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
人生苦短我用python python如何快速入门?
2018/03/12 Python
python实现随机调用一个浏览器打开网页
2018/04/21 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
python3人脸识别的两种方法
2019/04/25 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
用python写PDF转换器的实现
2020/10/29 Python
python中的对数log函数表示及用法
2020/12/09 Python
英国鲜花速递:Serenata Flowers
2018/04/03 全球购物
Dodax奥地利:音乐、电影、书籍、玩具、电子产品等
2019/08/31 全球购物
毕业生的自我评价范文
2013/12/31 职场文书
《草原》教学反思
2014/02/15 职场文书
环保建议书作文
2014/03/12 职场文书
产假请假条
2014/04/10 职场文书
抽样调查项目计划书
2014/04/24 职场文书
小学安全工作汇报材料
2014/08/19 职场文书
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
功夫熊猫观后感
2015/06/10 职场文书
公司中层管理培训心得体会
2016/01/11 职场文书