Localstorage实现input输入信息记忆缓存

像百度搜索框一样,点击input框后,下拉框展现以前输入的信息列表,列表可以即时查询、选择、删除,简单地通过Localstorage浏览器缓存实现,多组input

1.页面展现样式代码

<div class="group-row">
    <div class="form-group form-label">
        <label for="name" class="label">姓名</label>
        <div class="control">
            <input type="text" id="name" v-model="name" @click="setListFlag('name',name)" v-on:blur="blur('name')">
            <ul v-show="nameFlag" v-on:mouseover="nameOver=1" v-on:mouseout="nameOver=0">
                <li v-for="(index, name) in nameList" @click.prevent.self="selectOptions('name',name)">
                    <span>{{name}}</span>
                    <button class="delBut" @click="delData('name',name)">&times;</button>
                </li>
                <li v-if="nameList.length == 0"><span>暂无数据!</span></li>
            </ul>
        </div>
    </div>
    <div class="form-group form-label">
        <label for="hobby" class="label">爱好</label>
        <div class="control">
            <input type="text" id="hobby" v-model="hobby" @click="setListFlag('hobby',hobby)" v-on:blur="blur('hobby')">
            <ul v-show="hobbyFlag" v-on:mouseover="hobbyOver=1" v-on:mouseout="hobbyOver=0">
                <li v-for="(index, hobby) in hobbyList" @click.prevent.self="selectOptions('hobby',hobby)">
                    <span>{{hobby}}</span>
                    <button class="delBut" @click="delData('hobby',hobby)">&times;</button>
                </li>
                <li v-if="hobbyList.length == 0"><span>暂无数据!</span></li>
            </ul>
        </div>
    </div>
</div>

2.简单逻辑代码

 1        data: function () {
 2             return {
 3                 nameList:[],
 4                 hobbyList:[],
 5                 nameOver:0,
 6                 hobbyOver:0,
 7                 nameFlag:false,
 8                 hobbyFlag:false
 9             };
10         },
11         watch: {
12             'name':function(val){
13                 this.getLocalStorage('name',val);
14             },
15             'hobby':function(val){
16                 this.getLocalStorage('hobby',val);
17             }
18         },
19         methods: {
20             blur:function(key){
21                 let self = this;
22                 if(self[key+"Over"] == false){
23                     self[key+"Flag"] = false;
24                 }
25             },
26             setListFlag:function(key,val){
27                 let self = this;
28                 self.getLocalStorage(key,val);
29                 self[key+"Flag"] = true;
30             },
31             setLocalStorage(key,list) {
32                 if(key && list){
33                     if(Array.isArray(list) && list.length > 0){
34                         window.localStorage.setItem(key,JSON.stringify(list));
35                     }
36                 }
37             },
38             getLocalStorage(key,searchText) {
39                 let self = this,list = [];
40                 if(key){
41                     let _list = window.localStorage.getItem(key);
42                     if(_list && typeof _list == "string"){
43                         _list = JSON.parse(_list);
44                         if(searchText){//即时查询
45                             _list = _list.filter(function(item,index){
46                                 return item.indexOf(searchText) > -1;
47                             });
48                         }
49                         if(_list && Array.isArray(_list)){
50                             list = _list;
51                         }
52                     }
53                 }
54                 self[key+"List"] = list;
55                 return list;
56             },
57             selectOptions:function(key,val){
58                 let self = this;
59                 self[key] = val;
60                 self[key+"Flag"] = false;
61             },
62             delData:function(key,val){
63                 let self = this,list = self.getLocalStorage(key);
64                 list.splice(list.indexOf(val),1);
65                 this.setLocalStorage(key,list);
66             },
67             saveWriteText(name,hobby){
68                 let self = this;
69                 let nList = self.getLocalStorage('name'),hList = self.getLocalStorage('hobby');
70                 if(name && nList.indexOf(name) == -1){
71                     nList.push(name);
72                     self.setLocalStorage('name',nList);
73                 }
74                 if(hobby && hList.indexOf(hobby) == -1){
75                     hList.push(hobby);
76                     self.setLocalStorage('hobby',hList);
77                 }
78             }
79         }

 

3.页面显示截图,具体的样式很简单,可以随手写一个

(1)下拉展现存储的信息,支持删除

(2)立即查询搜索,无条件符合

(3)saveWriteText保存到本地缓存的方法,在点击保存或者执行某个操作后,可自定义

 

转载于:https://www.cnblogs.com/lhjfly/p/10313226.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
</head> <body> <el-form id="login" class="demo-ruleForm" :rules="rules" :model="ruleForm"> <el-form-item label="用户名" prop="username"> <el-input v-model="ruleForm.username"></el-input> </el-form-item> <el-form-item label="密码" prop="password"> <el-input v-model="ruleForm.password" type="password"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="loginHandler()">登录</el-button> </el-form-item> </el-form> </body> <script> new Vue({ el: "#login", data() { return { ruleForm:{ username: "", password: "", }, rules: { username: [{ required: true, message: '请输入用户名', trigger: 'blur' }, { min: 2, max: 10, message: '长度在 2 到 10 个字符', trigger: 'blur' } ], password: [{ required: true, message: '请输入密码', trigger: 'blur' }, { min: 2, max: 10, message: '长度在 2 到 10 个字符', trigger: 'blur' } ] } } }, methods: { loginHandler() { axios.post("http://localhost:9000/mvc_web/login?username="+this.ruleForm.username + "&password=" + this.ruleForm.password).then(function(response) { if(response.status==200){ if(response.data.id!=0){ //将数据保存在本地缓存中 /* window.localStorage.setItem("user",JSON.stringify(response.data)) */ //将数据保存到服务器中 sessionStorage.setItem("user",JSON.stringify(response.data)) window.location.href="home.html"} else{ console.log("账户或密码错误,请重新输入") } } }) .catch(function(error) { console.log(error) }) } } }) </script> </html> //Home.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="js/vue.js"></script> </head> <body> <div id="home"> 欢迎{{user.username}}登录 </div> </body> <script> new Vue({ el:"#home", data:{ user:JSON.parse(sessionStorage.getItem("user")) } }) </script> </html>解释每行代码
最新发布
06-02

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值