事件
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/02661d788b78b6f53b78a6661578337e.png#pic_center)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f8d3a9ee35a650f6f9ce0aab0bf9c4c1.png#pic_center)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/16fdc313400024bd9cf75181292a4ffd.png#pic_center)
原生js阻止冒泡和默认行为
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/506546f6bbb7fa563d55fda8128affc1.png#pic_center)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5ace36b87da3ecdd44b90c499bf31470.png#pic_center)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1de162e20a1fa99af843d2a952d86c66.png#pic_center)
在用户名逐个删除低效时,点击delete清空
在输入完密码时,点击回车提交表单。
双向绑定
用v-bind和v-on实现v-model
v-model的底层:
<input type=“text” :value=“res” @input=‘res=$event.target.value’>
<body>
<div id="app">
<h1>{{res}}</h1>
<!-- <input type="text" name="" id="" value="" v-model='res'> -->
<input type="text" :value="res" @input='handle'>
</div>
<script src="./js/vue.js"></script>
<script>
const vm = new Vue({
el: '#app',
data: {
res: 'hello'
},
methods: {
handle(event) {
this.res = event.target.value;
}
}
})
</script>
</body>