微信小程序实现全局搜索代码高亮

微信小程序实现全局搜索代码高亮,第1张

最近在做埋锋微信小程序的时候,需要实现在搜索框的输入内容的时候实现全局匹配实现高亮效果,目前的思路是,递归后台来返回的数据,并将对象的value值替换为需要的dom节点,并且通过rich-text来实现,高亮效果。

在实现的过程中主要考虑,不同类型的数樱简据结构,过滤掉特殊符号,url这些基本需求;同时在实现的过程中每次都要去处理最原始的数据,这就需要考虑到对象的深拷贝问题,目前所采用的方法是通过JSON.parse(JSON.stringify(str))来处理,因为弯颂晌在这个全局搜索的项目中不太会用到函数这些对象。最后通过replace方法来处理这些目标字符串。

wxml:

js:

标签数据在data中定义, 因为还要点击高亮, 所以同时给个状态值

页面循环渲染出来

点击事件bindtap='select',

绑定class: class="{{item.isSelect?'active':'select'}}", 点击的时候改变类名

自定义dataset :data-index="{{index}}"

样式效果

JS部份

到这儿, 高亮的就已经写好了. 怎么取值呢? 下面还有一个保存按钮. 给保存按钮一个点击事件:

1.定义一个空数据

2.遍历上边的data里的selectall数好闭组亩袜郑, 传两个参数, v是所有标签的状态(比如isSelect:false或isSelect:true), i是下迅颂标.

看打印结果

小程序中可以使用 input 组件实现搜索框,可以通过 placeholder-style 属性来设置拦银州搜索框提简蔽示语的颜色,而输入框内输入的文字的颜色可以通过 bindinput 事件监听函数结合 CSS 样式来实现。

以下是一个示例代码:

<view class="search-box"><input placeholder="请输入关键字" placeholder-style="color: #999" bindinput="onInput" /></view>

Page({ data: { inputValue: '' }, onInput(e) { this.setData({ inputValue: e.detail.value }) } })

.search-box input { color: #333}

在上面的代码中,input 组件的文字颜色通过 CSS 来设置为黑色,而搜索框内输入的文字颜色是根据用户输入的内容动态改变的,通过 bindinput 监听输入框的输入事件,在 onInput 事件处理函数中通过 setData 更新 inputValue 变量的值,从而实现动态改变文字颜搏衡色的效果。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12561095.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存