PS:这次做的这个小插件只是在前端实现,并没有经过数据库。需要用到的的框架:1.bootstrap.css的样式 2.Vue.js

最终效果如下:

JS部分:

$(window).click(function () {
content_data.is_selected = 'N';
});
var content_data = {
blog_classify: '',//分类搜索框
classify_data: [//所有分类
{name: "宠物技能培养"},
{name: "宠物健康教育"},
{name: "故事闲谈"},
{name: "宠物图库"},
{name: "宠物知识竞猜"},
{name: "宠物笑话"},
],
classify_new: [],//搜索框选项
is_selected: 'N'//判断搜索框里面的元素有没有被点击
}; var content_el = new Vue({
el: "#blog_el",
data: content_data,
watch: {
blog_classify: function (value) {
content_data.classify_new = [];
if (content_data.is_selected === 'N') {
for (var i = 0; i < content_data.classify_data.length; i++) {
if (content_data.classify_data[i].name.indexOf(value) !== -1) {
content_data.classify_new.push(content_data.classify_data[i].name)
}
}
}
}
},
其中,blog_classify是要在input框里面声明的v-model属性。当blog_classify属性的值发生变化时,会自动调用watch里面对应的方法。
我的想法:把classify_data[]里面的数据全都遍历一遍,用indexof方法判断输入的关键字是否存在于classify_data[]中,
如果存在就添加到classify_new[]中,最后在html里面用v-for生成可选项列表在在前台展示。
前台代码:
<div class="form-group" style="margin-bottom: 0;">
<label class="control-label">分类:</label>
<input v-model="blog_classify" type="text" class="form-control" id="question-classify">
</div>
<div class="col-md-6" style="position: fixed;padding-left: 0">
<div v-if="blog_classify.length>0" class="list-group"
style="max-height: 100px;overflow: auto;">
<a @click="classify_selected(statement)" href="javascript:void(0)"
class="list-group-item" v-for="statement,index in classify_new">{{statement}}</a>
</div>
</div> 前端主要是v-model和v-for这两个属性。v-model对blog_classify属性进行双向绑定,当blog_classify的值发生变化时,classify_new[]的数组内容也会动态改变。v-for会根据classify_new[]的内容动态改变列表的长度和
内容。
  这只是个人的一个想法,没有参照其他人的答案。后面写完之后发现百度里面好像还没有用Vue.js做类似的一个东西,就简单写来交流一下。这只是一个简单的写法,
不足的地方希望各位大佬交流更优化的方式。

怎么用js写一个类似于百度输入框的搜索插件的更多相关文章

  1. 分享:计算机图形学期末作业!!利用WebGL的第三方库three.js写一个简单的网页版“我的世界小游戏”

    这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业 ...

  2. JS写一个简单日历

    JS写一个日历,配合jQuery操作DOM <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...

  3. 前端与编译原理——用JS写一个JS解释器

    说起编译原理,印象往往只停留在本科时那些枯燥的课程和晦涩的概念.作为前端开发者,编译原理似乎离我们很远,对它的理解很可能仅仅局限于"抽象语法树(AST)".但这仅仅是个开头而已.编 ...

  4. 如何使用 js 写一个正常人看不懂的无聊代码

    如何使用 js 写一个正常人看不懂的无聊代码 代码质量, 代码可读性, 代码可维护性, clean code WAT js WTF https://www.destroyallsoftware.com ...

  5. 用原生js写一个"多动症"的简历

    用原生js写一个"多动症"的简历 预览地址源码地址 最近在知乎上看到@方应杭用vue写了一个会动的简历,觉得挺好玩的,研究一下其实现思路,决定试试用原生js来实现. 会动的简历实现 ...

  6. 分享一个jquery写的类似于百度的搜索框,(可动态配置,可单列或者table格式,可填充数据)

    需求:类似于百度的搜索框,可配置,可单列可table格式,可填充数据.页面可多次使用,简单,易用. 想法:使用jquery,css,ajax,前台调用,后台返回json数据. jquery代码: va ...

  7. 【Part1】用JS写一个Blog(node + vue + mongoDB)

    学习JS也有一段时间了,准备试着写一个博客项目,前后端分离开发,后端用node只提供数据接口,前端用vue-cli脚手架搭建,路由也由前端控制,数据异步交互用vue的一个插件vue-resourse来 ...

  8. [NodeJS]使用Node.js写一个简单的在线聊天室

    声明:教程来自<Node即学即用>.源代码案例均出自此书.博文仅为个人学习笔记. 第一步:创建一个聊天server. 首先,我们先来写一个Server: var net = require ...

  9. 使用 Node.js 写一个代码生成器

    背景 第一次接触代码生成器用的是动软代码生成器,数据库设计好之后,一键生成后端 curd代码.之后也用过 CodeSmith , T4.目前市面上也有很多优秀的代码生成器,而且大部分都提供可视化界面操 ...

随机推荐

  1. 结合 webpack 使用 vue-router(七)

    结合 webpack 使用 vue-router: 首先安装路由包vue-router: cnpm install vue-router 使用模块化工具导入 vue-router 后,必须手动调用 V ...

  2. cmd 查看端口占用情况

    netstat -nao|findstr 端口号 打开任务管理器查看

  3. 未知宽高div水平垂直居中的3种方法

    方法一 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...

  4. jmeter常用的beanshell脚本

    时间戳下载文件保存响应内容断言连接数据库解析jsonlist递归创建多级目录 常用内置变量调用cmd文件GUI小命令 时间戳import java.text.SimpleDateFormat;impo ...

  5. python之生成器(~函数,列表推导式,生成器表达式)

    一.生成器 概念:生成器的是实质就是迭代器 1.生成器的贴点和迭代器一样,取值方式也和迭代器一样. 2.生成器一般由生成器函数或者声称其表达式来创建,生成器其实就是手写的迭代器. 3.在python中 ...

  6. 23 在java中使用groovy类

    1       在java中使用groovy类 1.1  直接调用groovy类 在java中调用Groovy类,需要增加Groovy运行时到java的classpath中. pom.xml < ...

  7. 转 SecureCRT 使用X11 转发功能打开图形化窗口

    https://yq.aliyun.com/articles/53308 摘要: 有些时候,有些程序可能需要依赖图形界面才能启动,例如安装Oracle时(其实oracle支持命令行安装),例如需要启动 ...

  8. 第七章 设计程序架构 之 设计HTTP模块和处理程序

    1. 概述 HTTP模块和处理程序,可以让程序员直接跟HTTP请求交互. 本章内容包括 实现同步和异步模块及处理程序以及在IIS中如何选择模块和处理程序. 2. 主要内容 2.1 实现同步和异步模块及 ...

  9. 前端之Html元素的分类

    一.html元素可分为三大类:块元素.内联元素.可变元素 1.块元素: 常见块状元素:div,p,ul,ol,li,dl,dt,dd,form,hr,table,tr,td,h1-h6,filedse ...

  10. Azure 项目构建 – 构建稳定的直播和点播教学系统

    本课程主要介绍了如何在 Azure 平台上快速构建和部署基于 Azure 虚拟机的点播和直播教学系统, 实践讲解如何使用 Azure 门户创建虚拟机,配置视频服务,连接 CDN 加速 等. 具体包括项 ...