js实现搜索框跳转功能

6 篇文章 3 订阅
订阅专栏

毕设篇:搜索框的逻辑实现

功能说明

实现搜索框的响应跳转功能,符合匹配条件跳转对应页面,不符合弹出alert提示框或跳转404页面

案例实现源码           提取码:love

效果展示

 代码实现

sousuo.html (主页面)

<!--
 * @Author: lzm
 * @Date: 2021-11-23 13:11:46
 * @Notes: 使用built命令快速得到一些常用的snippets,右击py文件可以preview代码
 * @LastEditTime: 2021-11-23 18:19:52
-->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>搜索功能</title>
    <script src="../js/vue.js"></script>
    <link rel="stylesheet" href="../css/common.css">
    <style>
        .sousuo {
            margin: 200px 500px;
            text-align: center;
        }

        input {
            outline-style: none;
            border: 1px solid #ccc;
            border-radius: 3px;
            padding: 13px 14px;
            width: 420px;
            height: 20px;
            font-size: 14px;
            font-family: "Microsoft soft";
        }

        .ipt {
            float: left;
        }

        .btn {
            float: left;
        }

        button {
            background: none;
            border: none;
            margin-left: -50px;
            margin-top: 5px;
            cursor: pointer;
        }
    </style>
</head>

<body>
    <div id="app">
        <div class="sousuo">
            <div class="ipt">
                <input type="text" name="" id="content" placeholder="景点/酒店/美食/城市">
            </div>
            <!-- <input type="button" name="" id="search"> -->
            <div class="btn">
                <button onclick="toHtml()">
                    <svg t="1637644951499" class="icon" viewBox="0 0 1024 1024" version="1.1"
                        xmlns="http://www.w3.org/2000/svg" p-id="2455" width="36" height="36">
                        <path
                            d="M425.9 144.9c38.1 0 75 7.4 109.6 22.1 33.5 14.2 63.7 34.5 89.6 60.4 25.9 25.9 46.2 56 60.4 89.6 14.7 34.7 22.1 71.6 22.1 109.6s-7.4 75-22.1 109.6c-14.2 33.5-34.5 63.7-60.4 89.6-25.9 25.9-56 46.2-89.6 60.4-34.7 14.7-71.6 22.1-109.6 22.1s-75-7.4-109.6-22.1c-33.5-14.2-63.7-34.5-89.6-60.4-25.9-25.9-46.2-56-60.4-89.6-14.7-34.7-22.1-71.6-22.1-109.6s7.4-75 22.1-109.6c14.2-33.5 34.5-63.7 60.4-89.6 25.9-25.9 56-46.2 89.6-60.4 34.7-14.6 71.6-22.1 109.6-22.1m0-80c-199.8 0-361.7 161.9-361.7 361.7s161.9 361.7 361.7 361.7 361.7-161.9 361.7-361.7S625.7 64.9 425.9 64.9z"
                            fill="#2C2C2C" p-id="2456"></path>
                        <path
                            d="M715.3 654l226.3 226.3c15.6 15.6 15.6 40.9 0 56.6-15.6 15.6-40.9 15.6-56.6 0L658.7 710.6c-15.6-15.6-15.6-40.9 0-56.6 15.6-15.6 41-15.6 56.6 0z"
                            fill="#5ABE64" p-id="2457"></path>
                    </svg>
                </button>
            </div>
        </div>
    </div>


</body>

</html>
<script>
        new Vue({
            //
            el: '#app',
            data: {
               
            },
            methods: {}
        });
        var cityList = ['城市', '张家界', '慈利', '桑植', '永定区', '武陵源']
        var siteList = ['景点', '张家界武陵源', '武陵源', '黄龙洞', '天门山', '玻璃桥', '茅岩河', '漂流'];
        var hotelList = ['酒店', '张家界国际大酒店', '韦斯特大酒店', '维也纳酒店', '华天大酒店'];
        var foodList = ['美食', '三下锅', '泡芙', '重庆鸡公煲', '酸肉鱼', '凉面']
        var totalList = [];//定义一个循环器,减少代码冗余,初始化为空
        totalList = totalList.concat(cityList, siteList, hotelList, foodList);
        console.log(totalList);
        function toHtml() {
            //城市默认跳转景点
            // console.log('hello world');
            var getval = document.getElementById("content").value;
            // console.log(getval);//str要被包含在getval内,否则执行404
            for (var city = 0; city < cityList.length; city++) {
                if (getval.match(cityList[city])) {
                    localStorage.name = [getval,cityList[0],'景点'];
                    console.log(localStorage.name);
                    return document.location.href = ("jd.html?content=" + getval);
                }
            }
            for (var site = 0; site < siteList.length; site++) {
                if (getval.match(siteList[site])) {
                    localStorage.name = [getval,siteList[0],'景点'];
                    return document.location.href = ("jd.html?content=" + getval);
                }
            }
            // getval.match("酒店")
            for (var hotel = 0; hotel < hotelList.length; hotel++) {
                if (getval.match(hotelList[hotel])) {
                    localStorage.name = [getval,hotelList[0],'酒店'];
                    return document.location.href = ("hotel.html?content=" + getval);
                }
            }
            for (var food = 0; food < foodList.length; food++) {
                if (getval.match(foodList[food])) {
                    localStorage.name = [getval,foodList[0],'美食'];
                    return document.location.href = ("ms.html?content=" + getval);
                }
            }
            for (var i = 0; i < totalList.length; i++) {
                if (!getval.match(totalList[i])) {
                    alert("很抱歉,没有找到你要的信息");
                    return ;
                    // return document.location.href = ("../404.html?content=404");
                }
            }
        }
    </script>

jd.html(跳转页面,下面类推)

<!--
 * @Author: lzm
 * @Date: 2021-11-23 13:11:56
 * @Notes: 使用built命令快速得到一些常用的snippets,右击py文件可以preview代码
 * @LastEditTime: 2021-11-23 18:31:22
-->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>景区管理</title>
    
</head>

<body>
    <!-- 父组件模板 -->

    <body>
        <div id="app">
            <div class="category">
                <a href="sousuo.html">首页</a> > <a id="cg" href="jd.html"></a>
            </div>
            <div >
                <img src="../img/img1.png" alt="">
                <span id="message"></span>
            </div>
        </div>
        
    </body>

</html>

hotel.html

<div id="app">
            <div class="category">
                <a href="sousuo.html">首页</a> > <a id="cg" href="jd.html"></a>
            </div>
            <div >
                <img src="../img/img1.png" alt="">
                <span id="message"></span>
            </div>
        </div>

ms.html

<div id="app">
            <div class="category">
                <a href="sousuo.html">首页</a> > <a id="cg" href="ms.html"></a>
            </div>
            <div >
                <img src="../img/img1.png" alt="">
                <span id="message"></span>
            </div>
        </div>

公共js,css代码

<script src="../js/vue.js"></script>
    <link rel="stylesheet" href="../css/common.css">
    <style>
        img {
            width: 300px;
            height: 180px;
        }
    </style>

<script>
            var value = localStorage["name"];
            console.log(value);
            var cg = document.getElementById("cg");
            var message = document.getElementById("message");
            cg.innerHTML = value.split(',')[2];
            message.innerHTML = '欢迎来到张家界,你输入的关键词是'+ value.split(',')[0] +', 搜索目录为' + value.split(',')[1];
            // alert(value);
            $("#message1").text(value);
            // 父组件
            new Vue({
                //
                el: '#app',
                data: {
                    
                },
                methods: {}
            });
        </script>

知识总结

具体构思

首先,将需要匹配的关键词按类分别放置不同的数组中

        var cityList = ['城市', '张家界', '慈利', '桑植', '永定区', '武陵源']
        var siteList = ['景点', '张家界武陵源', '武陵源', '黄龙洞', '天门山', '玻璃桥', '茅岩河', '漂流'];
        var hotelList = ['酒店', '张家界国际大酒店', '韦斯特大酒店', '维也纳酒店', '华天大酒店'];
        var foodList = ['美食', '三下锅', '泡芙', '重庆鸡公煲', '酸肉鱼', '凉面']
        var totalList = [];//定义一个循环器,减少代码冗余,初始化为空
        totalList = totalList.concat(cityList, siteList, hotelList, foodList);

其中totalList数组存放每个类目数组的所有数据,也就是数据合并,这样做的目的就是为了实现不满足匹配条件的跳转404页面这一功能,目前只想到这一种方法

其次,通过document.getElementById()获取搜索框中用户输入的数据value,构建循环匹配,只要满足循环数组中的其中一项就成功跳转

var getval = document.getElementById("content").value;
            // console.log(getval);//str要被包含在getval内,否则执行404
for (var city = 0; city < cityList.length; city++) {
    if (getval.match(cityList[city])) {
        localStorage.name = [getval,cityList[0],'景点'];
        console.log(localStorage.name);
        return document.location.href = ("jd.html?content=" + getval);
    }
}

再次,如何将获取的数据传递给下一个页面,这里使用get方法静态传值(缺点就是数据缺乏安全性),如何将数据保存在浏览器中,这里使用localStorage()方法

1. str.match()方法,正则表达式                        具体详情戳  JS-判断字符串中包含指定字符       

2. 数组合并                                                       具体详情戳  JS数组合并(5种) 

3. h5技术,window.localStorage存储数据       具体详情戳 关于html页面之间传值的几种方式

4. CSS Input 样式美化                                     具体详情戳  CSS Input 样式美化 - 简书

问题思考

js向html传值,目前只有一种innerHTML最为简单和方便

关于js中循环代码的冗余问题,如有大佬有更加简洁的方法,欢迎评论区讨论!

说明:上述代码没有使用到vue.js,可自行删除

模糊搜索并跳转页面功能实现
MorningLight_LQ的博客
06-08 521
简单好用的搜索点击或回车跳转功能
js小练习--百度输入框搜索
qq_63533863的博客
03-23 1564
效果图: html代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
JS代码根据搜索引擎来路来判断 跳转到指定页面
08-17
JS代码根据搜索引擎来路来判断 跳转到指定页面
Javascript跳转页面和打开新窗口等方法
08-01 269
1.在原来的窗体中直接跳转用 onClick="window.location.href='你所要跳转的页面';" 2、在新窗体中打开页面用: onclick="window.open('你所要跳转的页面')" 3、返回上一页 ( 本地测试无效,服务器上可用) window.history.back(-1); 返回 返回上一页 ">返回上一页 4、一些用法
JS实现关键词搜索功能(简洁)
最新发布
weixin_51803794的博客
05-07 163
【代码】JS实现关键词搜索功能(简洁)
JavaScript实现百度搜索框提示
Alanx的博客
03-21 3980
JavaScript
js实现简单的搜索框
qq_53430000的博客
09-02 2641
数组pop push shift unshift 的练习
Google搜索点击搜索结果中的网页时在新网页中打开
Academicslackers的博客
02-11 2833
Google搜索点击搜索结果中的网页时在新网页中打开
Vue3根据搜索框内容跳转至本页面指定位置
海风依旧
11-09 2593
Vue3实现根据搜索框跳转至本页面指定位置
基于Vue.js 2.0实现百度搜索框效果
10-19
主要为大家详细介绍了基于Vue.js 2.0实现百度搜索框效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
JavaScript实现单击下拉框选择直接跳转页面的方法
10-23
主要介绍了JavaScript实现单击下拉框选择直接跳转页面的方法,涉及javascript控制页面跳转的相关技巧,需要的朋友可以参考下
JS搜索框提示 纯JS 结构无数据库
07-23
JS搜索框提示 纯JS 结构无数据库function smanPromptList(arrList,objInputId){ this.style = "background:#E8F7EB;border: 1px solid #CCCCCC;font-size:14px;cursor: default;" if (arrList.constructor!=Array){alert('smanPromptList初始化失败:第一个参数非数组!');return ;} window.onload =function() { arrList.sort(function(a,b){ if(a.length>b.length)return 1; else if(a.length==b.length)return a.localeCompare(b); else return -1; }) var objouter=document.getElementById("__smanDisp") //显示的DIV对象 var objInput = document.getElementById(objInputId); //文本框对象 var selectedIndex=-1; var intTmp; //循环用的:) if (objInput==null) {alert('smanPromptList初始化失败:没有找到"'+objInputId+'"文本框');return ;} //文本框失去焦点 objInput.onblur=function(){ objouter.style.display='none'; } //文本框按键抬起 objInput.onkeyup=checkKeyCode; //文本框得到焦点
根据搜索关键词进行跳转JS
06-06
从搜索引擎搜索关键词,进行跳转。如果直接打开页面,不会跳转
jQuery使用jsonp实现百度搜索的示例代码
12-28
项目实现:还原百度搜索功能; 项目原理:利用json回调页面传参; 什么是jsonp:就是利用[removed]标签的src地址,让目标页面回调本地页面,并且带入参数,也解决了跨域问题; 代码如下: html(css代码不提供) ...
JS实现模糊查询带下拉匹配效果
12-29
搜索框模糊查询带下拉匹配效果html— <!------------搜索框模糊查询带下拉匹配效果html----------------------> <form action=# method=post name=searchform id=searchform class=searchinfo>
搜索关键字:ajax实现;点击搜索到的会添加到搜索框内,点击搜索跳转页面
n20164206199的博客
01-10 9678
登录注册(记住密码)https://blog.csdn.net/n20164206199/article/details/86218384 搜索关键字点击显示到搜索框,搜索跳转页面  https://blog.csdn.net/n20164206199/article/details/86219679 发布二货跳转到添加界面 首页图片内容、分页的获取与显示  : https://mp....
实现首页和搜索结果页的数据共享,以及点击之后数据传递且跳转
王依米
05-23 1407
首先创建city-vuex分支git pullgit checkout city-vuexnpm run start如何实现,点击搜索结果页的条例,可以把数据传递到首页呢,这就需要首页和城市页,需要一些数据要分享了,城市选择页的数据如何传递给首页呢City.vue文件和Home.vue文件没有一个公用的父级组件的,如何进行数据传递呢,vue官方提供了一个工具vuex,这是一个数据框架,在一个大型项...
js 搜索框按回车进行搜索
热门推荐
li_csdn_的博客
07-17 1万+
1.不能使用form表单 2.监控键盘响应并使用trigger触发响应事件即可
微信小程序搜索框功能实现
05-30
微信小程序的搜索框功能可以通过以下步骤实现: 1. 在需要添加搜索框的页面中,添加一个输入框组件和一个搜索按钮组件。 ```html <view class="search-box"> <input class="search-input" placeholder="请输入搜索内容" bindinput="onInput" /> <button class="search-btn" bindtap="onSearch">搜索</button> </view> ``` 2. 在对应的 js 文件中,编写 onInput 和 onSearch 函数。 ```javascript Page({ data: { inputValue: '' // 用于存储输入框的值 }, onInput(event) { this.setData({ inputValue: event.detail.value }) }, onSearch() { const keyword = this.data.inputValue // 执行搜索操作,例如跳转到搜索结果页面 wx.navigateTo({ url: `/pages/search-result/search-result?keyword=${keyword}` }) } }) ``` 3. 在对应的 wxss 文件中,添加搜索框的样式。 ```css .search-box { display: flex; align-items: center; justify-content: space-between; padding: 10px; background-color: #f5f5f5; } .search-input { flex: 1; height: 30px; padding: 0 10px; border: none; border-radius: 15px; background-color: #fff; } .search-btn { width: 60px; height: 30px; margin-left: 10px; border: none; border-radius: 15px; background-color: #007aff; color: #fff; } ``` 以上就是微信小程序搜索框功能实现步骤。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • JSP+MySQL+JDBC实现登录、注册、增删查改——简单网站开发(没有加上查询哦) 10322
  • js实现搜索框跳转功能 6999
  • 简单点击图片弹出video视频弹窗功能 6677
  • 豆瓣TOP250爬虫,数据分析项目实战——pyecharts 4772
  • 使用vue.js+element实现简单dialog对话框功能 4422

分类专栏

  • vue3项目系列 2篇
  • 爱奇艺弹幕
  • Pandas 5篇
  • Pandas操作excel 1篇
  • bilibili弹幕爬取
  • 毕设总结系列 6篇
  • 毕设-旅游网 6篇
  • pyecharts 2篇
  • 弹幕分析 1篇
  • matplotlib 2篇
  • 动态图 1篇
  • pkl 1篇
  • 自动化办公 1篇
  • pdf 1篇
  • python下载文件方式 1篇

最新评论

  • 网易云数据分析实战

    咸鱼要翻身448: 这是什么时候的数据

  • JSP+MySQL+JDBC实现登录、注册、增删查改——简单网站开发(没有加上查询哦)

    2401_85123377: 谢谢好心人

  • 网易云数据分析实战

    Ddddddm_: 数据集可以求一下吗万分感谢有偿

  • 网易云数据分析实战

    m0_66585204: 你好 可以求一下music_message.csv文件吗 感谢感谢

  • 网易云数据分析实战

    痛仰abc: 你好 可以求一下music_message.csv文件吗

大家在看

  • JVM调优如何进行?
  • 2024 源支付YPay系统源码V1.1.4 开源版
  • YOLOv10改进 | SPPF篇 |YOLOv10引入 YOLOv9的SPPELAN模块改进SPPF
  • YOLOv10改进 | Neck篇 | YOLOv10引入BiFPN双向特征金字塔网络 1619
  • 深入理解Qt多线程编程(QtConcurrent) 1103

最新文章

  • vue3使用Swiper8实现自定义轮播效果
  • vue3使用vite+setup+ts写一个初级前端项目
  • Vue3实现一个文档学习网站
2022年8篇
2021年6篇
2020年12篇
2019年14篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高中不复,大学纷飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

PHP网站源码铁岭关键词按天计费公司潍坊优化价格驻马店seo多少钱新余企业网站制作哪家好大连seo排名推荐南京外贸网站设计报价大运网页设计丹东网站推广工具推荐张家口网站制作推荐昌吉网站优化按天计费衡阳百度seo哪家好吉祥企业网站改版公司双龙seo公司晋中优化推荐随州网络推广南昌外贸网站设计公司盘锦营销网站报价伊春网站设计绍兴网站优化推广报价郴州网站改版公司南山网络推广价格荆州营销型网站建设哪家好四平网站推广方案价格长春百度标王公司朝阳关键词排名哪家好鸡西关键词排名包年推广报价九江网站制作哪家好龙华关键词按天收费公司咸宁关键词排名包年推广思茅网站建设设计推荐歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化