怎么用js写一个类似于百度输入框的搜索插件

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>
  这只是个人的一个想法,没有参照其他人的答案。后面写完之后发现百度里面好像还没有用Vue.js做类似的一个东西,就简单写来交流一下。这只是一个简单的写法,不足的地方希望各位大佬交流更优化的方式。

原文地址:https://www.cnblogs.com/coder-wdq/p/8622646.html

时间: 2024-10-25 12:07:27

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

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

这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业不是百度来的,我只是百度了一些示例代码的意思,怎么用!算了,越解释万一越黑呢!哈哈O(∩_∩)O哈哈~) ----------------------------------------------------------------分界线------------------------------

前端用js写一个函数实现KB、MB、GB、TB单位转换

需求:用js写一个函数实现KB.MB.GB.TB单位转换 实现思路: 当函数参数值小于等于1000时,参数除以1000,即可得到最小单位kb,赋值给变量_integer:当_integer值大于1000时,kb值除以1000,即可得到mb,赋值给变量_integer:以此类推. 将单位保存在数组中, 将转换后的值与单位进行拼接即可得到转换后的单位. 代码展示: <!DOCTYPE html> <html lang="en"> <head> <m

HTML+JS 写一个 个人博客

HTML+JS 写一个 个人博客(初学版) HTML+JS 写一个 个人博客(初学版) 自己琢磨了两三天,算是把HTML入门了吧,然后就想着用这点知识写一个个人主页,然后一下午的时间写完了. 先不看代码,说说思路: 第一步:就是构思,一个网页的展示怎么才好看?!!站在一个老男人的角度,那远远是不能的,,, 1.标题 2.菜单栏(加个超链接) 3.展示页面(图片轮播) 第二步:小标题展示页面. 第三步:代码实现.(说了一堆废话)  代码 Jscript实现图片轮播.(很简单,一看就懂) <scri

Cordova webapp实战开发:(6)如何写一个iOS下自动更新的插件?

上一篇我们学习了如何写一个Andorid下自动更新的插件,我想还有一部分看本系列blog的开发人员希望学习在iOS下如何做插件的吧,那么今天你就可以来看看这篇文字了. 本次练习你能学到的 学习如何获取iOS当前版本号 学习iOS下插件类的编写 学习iOS下插件的配置 学习iOS下插件的调用 主要内容 APP中[检查更新]显示当前版本号 插件类的编写 在上一篇介绍Andorid插件时我们贴出了很多源码,这里也直接贴出代码,首先是iOS下插件的代码. 我们在Plugins下新建两个文件,一个头文件

制作一个类似于百度搜索的事件代码

下面这页代码是我制作的一个简单的类似于百度主页搜索的事件. 主要事件是在文本框上输入关键字,下面会有一个div显示出来你模糊关键字的数据. 并且点击下面的数据,数据会直接跳到文本框中. 还有鼠标放上变色的一个小事件. 有兴趣的可以看一下. <script src="jquery-1.11.2.min.js"> </script> <style type="text/css"> *{ margin:0px; auto; paddin

js写一个通讯录

模拟通讯录列表功能 我们手机上面的通讯录列表里面都有根据右侧的字母跳滚动到该字母的第一个名单地方. 于是我把这个功能拆分成两个功能区思考: 第一个是如何把这些名字的的汉字首字母提取出来,并且把相同字母的汉字归类,最后显示成列表. 第二是右侧字母导航,它需要一直固定在右侧,并且我按一个字母,屏幕最中间会弹出一个字母方框,代表我选中了这个字母. 我首先去实现第一个问题,如何提取名字中第一个汉字的首字母? 我去尝试过许多种方法,其中尝试过使用localeCompare(),我也成功的排序了,但是我发现

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

声明:教程来自<Node即学即用>.源代码案例均出自此书.博文仅为个人学习笔记. 第一步:创建一个聊天server. 首先,我们先来写一个Server: var net = require('net') var chatServer = net.createServer() chatServer.on('connection',function(client){ client.write('connection~~~\n') client.end() }) chatServer.listen(

python 写一个类似于top的监控脚本

最近老板给提出一个需要,项目需求大致如下:  1.用树莓派作为网关,底层接多个ZigBee传感节点,网关把ZigBee传感节点采集到的信息通过串口接收汇总,并且发送给上层的HTTP Server: 2.要有数据的反向控制通道,即网关与Server间要保持长连接,采用websocket实现,以此实现给ZigBee传感节点发送控制命令,来实现对ZigBee节点的远程配置操作: 3.树莓派网关本身要与上层Server实现交互,上层Server能够看到网关实时的cpu.内存以及网络上行与下行的带宽等等:

js 写一个滚动条

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>自己练习写一个滚动条</title> <style> *{ margin:0; padding: 0; } .scroll{ margin:200px; width:500px; height:5px; background: #ccc; posit