vue.js實現使用者評論、登入、註冊、及修改資訊功能,vue.js使用者評論

來源:互聯網
上載者:User

vue.js實現使用者評論、登入、註冊、及修改資訊功能,vue.js使用者評論

vue.js實現使用者評論、登入、註冊、及修改使用者部分資訊功能代碼。如下:

登入後:

登入前:

登入框:

註冊框:

html代碼部分:

<!DOCTYPE html><html lang="en"><head>  <meta charset="utf-8">  <title>index</title>  <link rel="stylesheet" href="css/font-awesome.min.css" rel="external nofollow" />  <link rel="stylesheet" href="css/index.css" rel="external nofollow" />  <script type="text/javascript" src="../lib/vue.min.js"></script>  <script type="text/javascript" src="../lib/jquery-1.11.3.min.js"></script></head><body>  <div id="comment">    <!--登入-->    <div class="loginbox" v-show="loginStatus" @click="loginboxClick()" style="display:none;">      <div class="box" @click="stopProp()">        <h3>使用者登入</h3>        <form name="login" id="login">          <input type="text" placeholder="請輸入使用者名稱" class="username">          <input type="password" placeholder="請輸入登入密碼" class="psw">          <input type="button" value="立即登入" @click="login()">          <input type="button" value="立即註冊" @click="showregister()" class="blueBtn">        </form>      </div>    </div>    <!--登入-->    <!--註冊-->    <div class="loginbox registerbox" v-show="registerStatus" @click="registerboxClick()" style="display:none;">      <div class="box" @click="stopProp()">        <h3>使用者註冊</h3>        <form name="register" id="register">          <input type="text" placeholder="請輸入使用者名稱" class="username">          <input type="password" placeholder="請輸入登入密碼" class="psw">          <input type="button" value="立即註冊" @click="register()">          <input type="button" value="立即登入" @click="showLogin()" class="blueBtn">        </form>      </div>    </div>    <!--註冊-->    <!--評論-->    <div class="commentbox">      <div class="userbar" v-show="userbarStatus" style="display:none;">        <img :src="'img/'+currentUser.userimg" alt="" title="" class="userimg">        <span class="loginout" @click="loginout()">退出帳號  <i class="icon-style icon-signout"></i></span>        <span class="username" v-text="currentUser.username"><i class="icon-style icon-user-md"> </i></span>        <p><span class="userword" v-text="currentUser.words" contenteditable="false"></span><i class="icon-style icon-edit" @click="editUserWords()"></i></p>      </div>      <div class=" commemtlist ">        <dl v-for="(value, index) in comments ">          <dt>            <img :src=" 'img/'+value.userimg ">            <span class="username ">{{value.username}}</span>          </dt>          <dd class="commentwords "><i class="icon-style icon-file-alt "></i>{{value.words}}</dd>          <dd class="btbar ">            <span class="like red "><i class="icon-style icon-thumbs-up "></i>點贊(<strong @click="like(index) ">{{value.like}}</strong>)</span>            <span class="notlike red "><i class="icon-style icon-thumbs-down "></i>點踩(<strong @click="notlike(index) ">{{value.nolike}}</strong>)</span>            <span class="data red "><i class="icon-style icon-calendar "></i>時間<strong>{{value.time}}</strong></span>          </dd>        </dl>        <div class="wordsbox ">          <textarea placeholder="請輸入留言 "></textarea>          <span @click="showLogin()" v-show="lrBtnStatus">登入</span>          <span @click="showregister()" v-show="lrBtnStatus">註冊</span>          <input type="submit" value="提交 " @click="subCommont()" />        </div>      </div>    </div>    <!--評論-->  </div></body></html><script src="js/index.js "></script>

css代碼部分:

* {  margin: 0;  padding: 0;  font-size: 14px;  font-family: "微軟雅黑";}body {  -webkit-touch-callout: none;  -webkit-user-select: none;  -khtml-user-select: none;  -moz-user-select: none;  -ms-user-select: none;  user-select: none;}#comment .loginbox {  position: fixed;  z-index: 99999;  width: 100%;  height: 100%;  background: rgba(0, 0, 0, .85);}#comment .icon-style {  margin-right: 5px;  color: #999;}#comment .loginbox .box {  height: 300px;  width: 300px;  padding: 40px 20px 20px 20px;  margin: 100px auto;  background: #fff;}#comment .loginbox .box h3 {  font-size: 16px;  font-family: "微軟雅黑";  text-align: center;}#comment .loginbox .box input {  height: 40px;  width: 100%;  border: 1px solid red;  margin: 10px 0;  border-radius: 2px;}#comment .loginbox .box input[type="button"] {  background: red;  color: #fff;  font-family: "微軟雅黑";}body #comment .loginbox .box .blueBtn {  background: #0089FF;  border: 1px solid #0089FF;}#comment .userbar {  height: 200px;  padding: 10px;  text-align: center;}#comment .userbar .userimg {  height: 100px;  width: 100px;  border-radius: 50px;}#comment .userbar .username {  display: block;  padding: 10px 0;  font-size: 18px;  color: red;  font-weight: bolder;}#comment .commentbox {  position: relative;  top: 40px;  width: 600px;  padding: 20px 20px 30px 20px;  background: #eee;  margin: 0 auto;}#comment .commentbox .loginout {  display: block;  text-decoration: underline;  color: blue;  cursor: pointer;}#comment .commentbox .userword {  outline: none;}#comment .commemtlist {  padding: 10px;}#comment .commemtlist dl {  padding: 20px 0;  border-bottom: 1px solid #D2D2D2;}#comment .commemtlist dl dt {  float: left;  text-align: center;  margin-right: 15px;}#comment .commemtlist dl dt img {  height: 50px;  width: 50px;  border-radius: 25px;}#comment .commemtlist dl dd {  padding-bottom: 10px;}#comment .commemtlist .btbar span {  margin-right: 15px;  font-size: 10px;}#comment .commemtlist .btbar .red strong {  color: red;  margin: 0 3px;  font-weight: normal;  cursor: pointer;}#comment .commemtlist .username {  display: block;  font-size: 12px;  text-align: center;}#comment .commemtlist .wordsbox textarea {  height: 100px;  width: 100%;  margin-top: 20px;  margin-bottom: 10px;  resize: none;}#comment .commemtlist .wordsbox span {  font-size: 13px;  margin-right: 15px;  text-decoration: underline;  color: blue;  cursor: pointer;}#comment .commemtlist .wordsbox input {  float: right;  width: 80px;  height: 28px;  text-align: center;  color: #fff;  background: red;  border: none;  border-radius: 3px;}

javascript代碼部分

//日期格式化函數Date.prototype.format = function(fmt) {    var o = {      "M+": this.getMonth() + 1, //月份       "d+": this.getDate(), //日       "h+": this.getHours(), //小時       "m+": this.getMinutes(), //分       "s+": this.getSeconds(), //秒       "q+": Math.floor((this.getMonth() + 3) / 3), //季度       "S": this.getMilliseconds() //毫秒     };    if (/(y+)/.test(fmt)) {      fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));    }    for (var k in o) {      if (new RegExp("(" + k + ")").test(fmt)) {        fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));      }    }    return fmt;  }  //建立vue執行個體var v = new Vue({  el: "#comment",  data: {    //原始使用者評論資訊    comments: [{      username: "張三",      userimg: "user02.jpg",      words: "這曆史可以啊,不錯不錯。呵呵!",      like: 87,      nolike: 53,      time: "2017-02-17 09:15:25"    }, {      username: "李四",      userimg: "user01.jpg",      words: "吃飯去了啊。呵呵!",      like: 23,      nolike: 63,      time: "2017-3-27 10:12:34"    }, {      username: "王五",      userimg: "user03.jpg",      words: "這評論可以。呵呵!",      like: 27,      nolike: 33,      time: "2017-04-02 03:26:54"    }],    //原始使用者資訊    users: [{      username: "zhangsan",      password: "123456",      userimg: "user.jpg",      words: "世界那麼大我想去看看。"    }, {      username: "zyc",      password: "123456",      userimg: "user01.jpg",      words: "雨過天晴的美好。"    }, {      username: "admin",      password: "123456",      userimg: "user02.jpg",      words: "下大雨了,怎麼辦啊。"    }],    //目前使用者資訊    currentUser: { username: "", words: "", userimg: "" },    //登入框顯示或隱藏狀態    loginStatus: false,    //註冊框顯示或隱藏狀態    registerStatus: false,    //使用者資訊列顯示或隱藏狀態    userbarStatus: false,    //登入註冊入口顯示或隱藏狀態    lrBtnStatus: true  },  methods: {    //點擊登入    showLogin: function() {      document.getElementById("login").reset();      this.loginStatus = true;      this.registerStatus = false;    },    //點擊註冊    showregister: function() {      document.getElementById("register").reset();      this.loginStatus = false;      this.registerStatus = true;    },    //退出登入    loginout: function() {      //清空目前使用者資料      this.currentUser.username = "";      this.currentUser.words = "";      this.currentUser.userimg = "";      alert("退出成功!");      this.userbarStatus = false;      //登入或註冊入口顯示      this.lrBtnStatus = true;    },    //登入遮罩層點擊事件    loginboxClick: function() {      this.loginStatus = false;    },    //註冊遮罩層點擊事件    registerboxClick: function() {      this.registerStatus = false;    },    //點擊登入或註冊框阻止事件冒泡    stopProp: function(e) {      e = e || event;      e.stopPropagation();    },    //點贊    like: function(index) {      this.comments[index].like++;    },    //點踩    notlike: function(index) {      this.comments[index].nolike++;    },    //登入    login: function() {      var username = $(".loginbox").find(".username").val(); //擷取使用者名稱      var psw = $(".loginbox").find(".psw").val() //擷取密碼      var flag = false;      for (var i = 0, len = this.users.length; i < len; i++) {        //判斷使用者名稱密碼是否正確        if (this.users[i].username === username && this.users[i].password === psw) {          flag = true;          alert("登入成功!");          //使用者登入框消失          this.loginStatus = false;          //使用者登入資訊顯示          this.userbarStatus = true;          //設定使用者欄資訊          this.currentUser.username = this.users[i].username;          this.currentUser.words = this.users[i].words;          this.currentUser.userimg = this.users[i].userimg;          //登入或註冊入口消失          this.lrBtnStatus = false;          break;        }      }      if (!flag) {        alert("輸入的帳號或密碼不正確!");        document.getElementById("login").reset();      }    },    //註冊    register: function() {      var obj = {}; //建立使用者帳號密碼容器      var flag = false;      var username = $(".registerbox").find(".username").val(); //擷取使用者名稱      var psw = $(".registerbox").find(".psw").val() //擷取密碼        //判斷使用者名稱是否存在      for (var i = 0, len = this.users.length; i < len; i++) {        if (this.users[i].username === username) {          flag = true;          alert("該使用者名稱已經被註冊!");          break;        }      }      if (!flag) {        if (username == "" || psw == "") {          alert("帳號和密碼不可為空!");        } else {          var randomNum = Math.floor(Math.random() * 5) + 1;          //隨機產生頭像          var randomImg = "user0" + randomNum + ".jpg";          obj.username = username;          obj.password = psw;          obj.words = "系統預設標語。"          obj.userimg = randomImg;          //添加使用者資訊到使用者列表          this.users.push(obj);          alert("註冊成功!");          //設定使用者資訊列顯示          this.userbarStatus = true;          //設定使用者欄資訊          this.currentUser.username = obj.username;          this.currentUser.words = obj.words;          this.currentUser.userimg = obj.userimg;          //登入或註冊入口消失          this.lrBtnStatus = false;          //重設表單資料          document.getElementById("register").reset();          //註冊框消失          this.registerStatus = false;        }      }    },    //編輯使用者心情    editUserWords: function() {      var wordsObj = $(".commentbox").find(".userword");      var edit = wordsObj.attr("contenteditable"); //擷取元素的H5可編輯屬性      if (edit == "false") {        //開啟可編輯功能        wordsObj.attr("contenteditable", "true");      } else {        for (var i = 0, len = this.users.length; i < len; i++) {          //尋找對應使用者名稱          if (this.users[i].username === this.currentUser.username) {            //改變使用者資訊裡面的words資料            this.currentUser.words = $(".commentbox").find(".userword").text();            this.users[i].words = this.currentUser.words;            //關閉可編輯功能            wordsObj.attr("contenteditable", "false");            alert("儲存成功!");          }        }      }    },    //點擊提交評論    subCommont: function() {      if (!this.userbarStatus) {        alert("登入之後才可以評論!");        this.loginStatus = true;      } else {        if ($(".wordsbox textarea").val() == "") {          alert("請先填寫評論內容!");        } else {          var obj = {}; //評論資訊對象的容器          obj.username = this.currentUser.username;          obj.userimg = this.currentUser.userimg;          obj.words = $(".wordsbox textarea").val();          obj.like = 0;          obj.nolike = 0;          obj.time = new Date().format("yyyy-MM-dd hh:mm:ss");          //將評論資訊壓入評論資訊列表          this.comments.push(obj);          alert("評論成功!");          $(".wordsbox textarea").val("");        }      }    }  }});

github效果線上預覽

倉庫地址:https://github.com/zhongyoucong/vuejs/

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援幫客之家。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.