vue监听用户输入和点击功能

本文实例为大家分享了vue监听用户输入和点击的具体代码,供大家参考,具体内容如下

功能1:监听用户输入和点击,并实时显示,

功能2:点击发布,编辑页面隐藏,显示发布成功。

功能1 html代码:

使用:v-model监听,!submmited视图默认显示,注意监听option v-for="(i,index) in authors"   v-bind:value="authors[index],

监听当下用户点击的那个;

 <div id="add-blog">
   <h2>添加博客</h2>
   <form v-if="!submmited">
    <label for="" class="">博客标题</label>
    <input class="" type="text" v-model="blog.title" required/>
    <br/>
    <label for="" class="">博客内容</label>
    <textarea class="" v-model="blog.content"></textarea>
    <div id="checkboxs">
     <label for="">Vue.js</label>
     <input type="checkbox" value="vue.js" v-model="blog.categories"/>
     <label for="">react.js</label>
     <input type="checkbox" value="react.js" v-model="blog.categories"/>
     <label for="">javasript</label>
     <input type="checkbox" value="javasript.js" v-model="blog.categories"/>
     <label for="">css</label>
     <input type="checkbox" value="css" v-model="blog.categories"/>
    </div>
    <label for="">作者:</label>
    <select v-model="blog.author">
     <option v-for="(i,index) in authors" v-bind:value="authors[index]">
      {{i}}
     </option>
    </select>
    <button v-on:click.prevent="post">添加博客</button>
   </form>
   <hr/>
   <div id="preview">
    <h3>博客总览</h3>
    <p>博客标题:</p>
    <p class="color">{{blog.title}}</p>
    <p>博客内容:</p>
    <p class="color">{{blog.content}}</p>
    <p>博客分类</p>
    <ul>
     <li v-for="categories in blog.categories" class="color">
      {{categories}}
     </li>
    </ul>
    <p>作者:</p>
    <p class="color">{{blog.author}}</p>
   </div>
  </div>

 功能1 js代码:

data(){
     return{
      blog:{
       title:"",
       content:"",
       categories:[],
       author:""
      },
      authors:[
       "张三","李四","王五"
      ],
      submmited:false
     }
   },
 methods:{
     post:function () {
      this.$http.post("https://jsonplaceholder.typicode.com/posts/"{
       title:this.blog.title,
       body:this.blog.content,
})
      .then(function (data) {
       //console.log(data);
      })
     }
   }

功能2 html代码:

 <div v-if="submmited">
   <h3>您的博客发布成功</h3>
 </div>

功能2 js代码

this.submmited=true 让 “您的博客发布成功” 显示

methods:{
     post:function () {
      this.$http.post("https://jsonplaceholder.typicode.com/posts/"{
       title:this.blog.title,
       body:this.blog.content,
})
      .then(function (data) {
       //console.log(data);
        this.submmited=true
      })
     }
   }

addblog.vue所有代码:

<template>
  <div id="add-blog">
   <h2>添加博客</h2>
   <form v-if="!submmited">
    <label for="" class="">博客标题</label>
    <input class="" type="text" v-model="blog.title" required/>
    <br/>
    <label for="" class="">博客内容</label>
    <textarea class="" v-model="blog.content"></textarea>
    <div id="checkboxs">
     <label for="">Vue.js</label>
     <input type="checkbox" value="vue.js" v-model="blog.categories"/>
     <label for="">react.js</label>
     <input type="checkbox" value="react.js" v-model="blog.categories"/>
     <label for="">javasript</label>
     <input type="checkbox" value="javasript.js" v-model="blog.categories"/>
     <label for="">css</label>
     <input type="checkbox" value="css" v-model="blog.categories"/>
    </div>
    <label for="">作者:</label>
    <select v-model="blog.author">
     <option v-for="(i,index) in authors" v-bind:value="authors[index]">
      {{i}}
     </option>
    </select>
    <button v-on:click.prevent="post">添加博客</button>
   </form>
   <div v-if="submmited">
    <h3>您的博客发布成功</h3>
   </div>
   <hr/>
   <div id="preview">
    <h3>博客总览</h3>
    <p>博客标题:</p>
    <p class="color">{{blog.title}}</p>
    <p>博客内容:</p>
    <p class="color">{{blog.content}}</p>
    <p>博客分类</p>
    <ul>
     <li v-for="categories in blog.categories" class="color">
      {{categories}}
     </li>
    </ul>
    <p>作者:</p>
    <p class="color">{{blog.author}}</p>
   </div>
  </div>
</template>

<script>
  export default {
    name: "addblog",
   data(){
     return{
      blog:{
       title:"",
       content:"",
       categories:[],
       author:""
      },
      authors:[
       "张三","李四","王五"
      ],
      submmited:false
     }
   },
   methods:{
     post:function () {
      this.$http.post("https://jsonplaceholder.typicode.com/posts/",this.blog)
      .then(function (data) {
       console.log(data);
       this.submmited=true
      })
     }
   }
  }
</script>

<style scoped>
#add-blog *{
 box-sizing: border-box;
}
#add-blog{
 margin: 20px auto;
 max-width: 600px;
 padding:20px;
}
 label{
  display: block;
  margin:20px 0 10px;
 }
 input[type="text"],textarea,select{
  display: block;
  width: 100%;
  padding: 8px;
 }
 textarea{
  height: 200px;
 }
 #checkboxs label{
  display: inline-block;
  margin-top: 0;
 }
 #checkboxs input{
  display: inline-block;
  margin-right: 10px;
 }
 button{
  display: block;
  margin:20px 0;
  background: crimson;
  border:0;
  padding:14px;
  border-radius: 4px;
  font-size: 18px;
  cursor: pointer;
  color: white;
 }
 #preview{
  padding:10px 20px;
  border: 1px dotted #ccc;
  margin:30px 0;
 }
 .color{
  color: blue;
 }
</style>

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

(0)

相关推荐

  • 使用vue与jquery实时监听用户输入状态的操作代码

    实现效果:input未输入值,按钮禁用 jquery操作代码: html <input type="text" name="" placeholder="请输入用户名" id="userName" > <button class="disabled" id="login">登录</button> css .disabled { pointer-even

  • vue监听用户输入和点击功能

    本文实例为大家分享了vue监听用户输入和点击的具体代码,供大家参考,具体内容如下 功能1:监听用户输入和点击,并实时显示, 功能2:点击发布,编辑页面隐藏,显示发布成功. 功能1 html代码: 使用:v-model监听,!submmited视图默认显示,注意监听option v-for="(i,index) in authors"   v-bind:value="authors[index], 监听当下用户点击的那个: <div id="add-blog&q

  • Android EditText 监听用户输入完成的实例

    我们都知道, Android EditText输入框,并没有监听用户输入完成的功能,需要我们自己实现. 下面是实现的方法,仅供参考: EditText editText = (EditText) findViewById(R.id.edit); editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, i

  • Vue监听事件实现计数点击依次增加的方法

    1.实现计数器功能,每点击一次按钮,count值增加一或增加二,鼠标在cordinates行移动时会更新当前坐标,通过自定义函数或者stop属性禁止事件传播. 效果如下: 代码如下: <!DOCTYPE html><html><head> <meta charset="utf-8"> <title>计数器自增函数</title> <script src="vue.js"></s

  • Vue 页面监听用户预览时间功能的实现代码

    最近的业务中涉及到这样一个需求,在线培训的系统需要知道用户对某个在线预览的页面追踪用户的预览时长.初步我们首先想到借助 Vue 页面的生命周期函数 mounted 和 destroyed,分别在其中加入开始计时和清除计时的逻辑,通过后台的接口上报对应的培训素材的时间数据,即可达到目的. 有了思路,我们就可以开始筹划具体的代码. 定义开始结束计时函数 在 data 中定义我们通过变量定义计时器,这样可以通过 this.timer 随处可访问,便于后面销毁页面的时候清除它. duration 为时长

  • vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)

    [注]:popstate 事件 a.当活动历史记录条目更改时,将触发popstate事件. b.如果被激活的历史记录条目是通过对history.pushState()的调用创建的,或者受到对history.replaceState()的调用的影响,popstate事件的state属性包含历史条目的状态对象的副本. c.需要注意的是调用history.pushState()或history.replaceState()不会触发popstate事件. d.只有在做出浏览器动作时,才会触发该事件,如用

  • 使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)

    基于jQuery的扫码枪监听.如果只是想实现监听获取条码扫码信息,可以直接拿来使用,如果有更多的条码判断处理逻辑需要自己扩展. 一.功能需求 使用扫码枪扫描条码,在一个web页面监听获取扫码枪的数据,并禁止用户进行手动的输入操作. 开始的想法非常简单,因为扫码枪就是模拟键盘的输入,当他用usb接口插入电脑的时候,就变成了一个外接的输入设备,用js监听就可以了.但是如何判断用户是否为手动输入就需要做一些处理了. 二.主要问题 1.如何判断是否手动输入 2.如何判断一个条码输入完成 三.解决方案 手

  • 基于vue监听滚动事件实现锚点链接平滑滚动的方法

    基于vue监听滚动事件,实现锚点链接平滑滚动 近日在做一个vue项目的餐饮模块,小编需要实现一个菜单列表显示的功能(如图所示:左边为菜单类别,右边显示相对应的菜品) 小编将此分为三个功能模块来实现(本来一张动画就清晰明了,小编太笨,只得口述一下): 1.左边点击类别,右边显示相应类别的菜品列表(平滑滚动) 2.滚动右边的滚动条,左边对应的显示当前样式 3.若从别的页面点击菜品进来该页面,则该菜品为指定效果 小编也是vue的初学者,在阅读了大量的文章后,其中借鉴http://www.jb51.ne

  • Vue监听一个数组id是否与另一个数组id相同的方法

    数据list,结构为[{id:1,-},{id:2,-}],数据shoplist,结构为[{id:1,-},{id:2,-}],判断当shoplist.id等于list.id时显示list的数据. .vue文件: <template> <div class="hello"> <div class="shoplist"> <button @click="clickButtonShopList">cli

  • vue监听dom大小改变案例

    需求描述:layout左边菜单栏收缩,右边的content区域的swiper宽度没有改变(没有图,朋友的问题,大体画一下) 类似于点击折叠左边目录会变小,右边内容区域会变大,但是swiper在刚开始的时候就确定了宽度,所以我的想法是监听右边宽度大小去updata一下.但是我用vue的watch监听$refs.swiper.offsetwidth失败了!!!!但是宽度确实是在改变的很费解,先说一下解决方法把 1.使用element-resize-detector var elementResize

随机推荐