小程序 - 带输入搜索的下拉筛选框 - 前端搜索

效果

在这里插入图片描述

页面

<view>
	<view>名称</view>
	<view>
	  <input
	    placeholder="请选择"
	    value="{{ selectedName }}"
	    bindinput="bindNameInput"
	    bindfocus="bindNameFocus"
	  />
	</view>
	<image src="./images/more.png"></image>
</view>
<view wx:if="{{ isSearchListShow }}">
	<view
	  wx:for="{{ matchedNameList }}"
	  wx:key="{{ item }}"
	  data-item="{{ item }}"
	  bindtap="bindNameChange"
	>
	  {{ item }}
	</view>
</view>

js

data: {
	names: ['test1', 'test2', 'test3', 'test22'],
    matchedNameList: [],
    isSearchListShow: true,
    selectedName: '',
}
bindNameFocus() {
    this.setData({ isSearchListShow: true });
},
bindNameChange(e) {
	let name = e.currentTarget.dataset.item;
	this.setData({ selectedName: name, isSearchListShow: false });
},
bindNameInput(e) {
	const keyword = e.detail.value.toLowerCase();
	const reg = new RegExp(keyword);
	const matchedNameList = this.data.names.filter(item => reg.test(item.toLowerCase()));
	this.setData({ matchedNameList });
},
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现有模糊搜索下拉选择,可以使用以下步骤: 1. 创建一个输入下拉选择组件,并将它们放置在一起。 2. 给输入绑定一个 "keyup" 事件,当用户输入时,触发模糊搜索功能。 3. 在 "keyup" 事件处理程序,获取输入的值,并将其与下拉选择的所有选项进行比较。 4. 如果选项包含输入的值,则将该选项添加到一个新的数组。 5. 将新数组的选项更新到下拉选择,以显示符合条件的选项。 6. 当用户从下拉选择选择一个选项时,将所选的值更新到输入。 7. 最后,当用户清空输入时,将下拉选择的所有选项显示出来。 具体实现过程可以参考以下代码: ```html <!-- 输入下拉选择组件 --> <template> <div> <input type="text" v-model="searchText" @keyup="searchOptions" /> <select v-model="selectedOption"> <option v-for="(option, index) in filteredOptions" :key="index" :value="option">{{ option }}</option> </select> </div> </template> <script> export default { data() { return { options: ['apple', 'banana', 'orange', 'pear', 'peach'], // 所有选项 filteredOptions: [], // 模糊搜索后的选项 searchText: '', // 输入的值 selectedOption: '', // 当前选择的选项 }; }, methods: { searchOptions() { // 获取输入的值,并将其转为小写字母 const searchText = this.searchText.toLowerCase(); // 过滤符合条件的选项,并将它们添加到新数组 this.filteredOptions = this.options.filter(option => option.toLowerCase().includes(searchText)); // 如果输入的值为空,则显示所有选项 if (!searchText) { this.filteredOptions = this.options; } }, }, }; </script> ``` 上述代码,我们首先定义了一个包含所有选项的数组 `options`,以及一个空数组 `filteredOptions`。在 `searchOptions` 方法,我们获取输入的值,并将其转为小写字母,然后通过 `filter` 方法过滤符合条件的选项,并将它们添加到 `filteredOptions` 数组。最后,我们在模板使用 `v-for` 指令将 `filteredOptions` 数组的选项渲染到下拉选择。同时,我们也将 `selectedOption` 属性绑定到下拉选择上,以便在用户选择一个选项时,将其值更新到输入

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值