使用JS location實(shí)現(xiàn)搜索框歷史記錄功能
首先,來(lái)看下效果圖(樣式什么的就不必吐槽了哈)
html代碼
<form id="hisform">
<div id="searchbox">
<input id="inpt" type="text" autocomplete="off" />
<input id="btn" type="button" value="搜索" />
<div id="historybox">
<h3>搜索記錄:</h3>
//用于保存記錄信息
<ul id="list">
</ul>
</div>
</div>
</form>
css代碼
* {
margin: 0;
padding: 0;
}
input {
border: 0;
vertical-align: middle;
float: left;
}
#searchbox {
width: 300px;
height: 50px;
background: #fff;
margin: 100px auto;
border: 1px solid #ccc;
position: relative;
}
#inpt {
width: 240px;
height: 50px;
outline: none;
text-indent: 10px;
}
#btn {
width: 60px;
height: 50px;
cursor: pointer;
}
/* 歷史記錄框 */
#historybox {
width: 280px;
padding: 10px 10px 50px;
border: 1px solid #ccc;
position: absolute;
top: 50px;
left: -1px;
/* 隱藏 */
display: none;
}
#historybox h3 {
margin-bottom: 10px;
}
#list {
list-style: none;
}
#list .on {
float: left;
border: 1px solid #ccc;
background: #aaa;
height: 30px;
line-height: 30px;
margin: 0 2px;
border: 1px solid #ccc;
border-radius: 5px;
}
#list .active {
color: #fff;
text-decoration: none;
padding: 2px;
}
js代碼(這里需引入jQuery)
$(function () {
let max_history = 7;// 存儲(chǔ)最大歷史數(shù)據(jù)
// 鼠標(biāo)移入事件
$('#inpt').on('focus', function () {
$('inpt').val = '';
let data = localStorage.getItem('data'); //從本地存儲(chǔ)中讀取數(shù)據(jù)
if (!data) {
$('#historybox').css('display', 'none');
} else {
$('#historybox').css('display', 'block');
historydata(JSON.parse(data)); // 渲染數(shù)據(jù)
}
})
// 鼠標(biāo)移出事件
$('#inpt').on('blur', function () {
$('#historybox').css('display', 'none');
init_history();// 初始化歷史記錄,清空記錄
})
//點(diǎn)擊搜索按鈕時(shí),將搜索內(nèi)容添加到本地存儲(chǔ)
$('#btn').on('click', function () {
var search = inpt.value;
var data = localStorage.getItem('data'); //從本地存儲(chǔ)中讀取數(shù)據(jù)
if (data) {
var arr = JSON.parse(data); //如果有數(shù)據(jù)則轉(zhuǎn)換成對(duì)象或數(shù)組
} else {
var arr = []; //如果沒(méi)有數(shù)據(jù),則新增一條
}
arr.push(search);
removalDuplicate(arr);// 對(duì)用戶(hù)輸入值進(jìn)行處理(去重-篩選)
localStorage.setItem('data', JSON.stringify(arr)); //將數(shù)據(jù)寫(xiě)入到本地存儲(chǔ)中
})
// 數(shù)組去重-篩選函數(shù)
function removalDuplicate(arr) {
for (let i = 0; i < arr.length; i++) {
var arritem = arr[i].trim(); // 去除字符串兩端空格
// 如果值為空,則不添加
if (arritem == '') {
arr.splice(i, 1);
}
if (arritem !== "") {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) {
arr.splice(i, 1);//如果第二次輸入的值與第一次相同,則添加第二次的值
}
}
}
}
return arr;
}
// 渲染數(shù)據(jù)
function historydata(searchArr) {
searchArr.reverse();//反轉(zhuǎn),從后往前添加
// 遍歷出數(shù)據(jù)
if (searchArr.length <= max_history) {//如果存儲(chǔ)數(shù)據(jù)小于等于max_history,則遍歷渲染
for (let i = 0; i < searchArr.length; i++) {
$('#list').append(`<li class='on'><a href='#' class='active'>${searchArr[i]}</a><li>`);
}
} else {//否則渲染最大歷史記錄條數(shù)
for (let i = 0; i < max_history; i++) {
$('#list').append(`<li class='on'><a href='#' class='active'>${searchArr[i]}</a><li>`);
}
}
}
// 初始化-清空歷史記錄
function init_history() {
$('#list').html('');
}
})
總結(jié)
以上所述是小編給大家介紹的使用JS location實(shí)現(xiàn)搜索框歷史記錄功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)我們網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
上一篇:javascript實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊生成文字特效
欄 目:JavaScript
下一篇:java遇到微信小程序 "支付驗(yàn)證簽名失敗" 問(wèn)題解決
本文標(biāo)題:使用JS location實(shí)現(xiàn)搜索框歷史記錄功能
本文地址:http://www.jygsgssxh.com/a1/JavaScript/9414.html
您可能感興趣的文章
- 04-02包含javascript舍的詞條
- 04-02java后端代碼分頁(yè) java后端實(shí)現(xiàn)分頁(yè)page
- 01-10使用webpack/gulp構(gòu)建TypeScript項(xiàng)目的方法示例
- 01-10Echarts實(shí)現(xiàn)單條折線(xiàn)可拖拽效果
- 01-10使用JS來(lái)動(dòng)態(tài)操作css的幾種方法
- 01-10在Vue項(xiàng)目中使用Typescript的實(shí)現(xiàn)
- 01-10js實(shí)現(xiàn)上傳圖片并顯示圖片名稱(chēng)
- 01-10Vue中使用Lodop插件實(shí)現(xiàn)打印功能的簡(jiǎn)單方法
- 01-10echarts實(shí)現(xiàn)折線(xiàn)圖的拖拽效果
- 01-10d3.js實(shí)現(xiàn)圖形縮放平移


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02javascript點(diǎn)線(xiàn),點(diǎn)線(xiàn)的代碼
- 04-02javascript潛力,javascript強(qiáng)大嗎
- 04-02javascript替換字符串,js字符串的替換
- 04-02javascript移出,js 移入移出
- 04-02包含javascript舍的詞條
- 04-02javascript并行,深入理解并行編程 豆瓣
- 04-02javascript匿名,js匿名方法
- 04-02javascript警報(bào),JavaScript警告
- 04-02javascript遮蓋,JavaScript遮蓋PC端頁(yè)面
- 04-02javascript前身,javascript的前身
隨機(jī)閱讀
- 01-10C#中split用法實(shí)例總結(jié)
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 04-02jquery與jsp,用jquery
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載


