<view class="container">
<input type="text" placeholder="请输入关键词搜索..." bindinput="onInput" value="{{inputValue}}" bindfocus="showPopup"/>
<!-- 弹出层 -->
<view wx:if="{{showPopup}}" position="bottom" bind:close="onClosePopup">
<scroll-view scroll-y style="max-height: 300px;">
<view class="popup-content">
<!-- 动态渲染过滤后的选项 -->
<view wx:for="{{filteredOptions}}" wx:key="index" class="option-item" bindtap="selectOption" data-value="{{item}}">{{item}}</view>
<!-- 无结果提示 -->
<view wx:if="{{filteredOptions.length === 0}}" class="no-result">
暂无匹配结果
</view>
</view>
</scroll-view>
</view>
</view>
.container {
padding:100px 20px;
}
.popup-content {
padding: 20px;
}
.option-item {
padding: 15px;
border-bottom: 1px solid #eee;
}
.option-item:hover {
background-color: #f5f5f5;
}
.no-result {
padding: 15px;
text-align: center;
color: #999;
}
Page({
data: {
inputValue: '', // 输入框的值
showPopup: false, // 是否显示弹出层
allOptions: ['苹果', '香蕉', '橙子', '西瓜', '草莓', '蓝莓'], // 所有选项
filteredOptions: [] // 过滤后的选项
},
onLoad() {
app.editTabBar();
// 初始化时显示所有选项
this.setData({
filteredOptions: this.data.allOptions
});
},
// 输入事件
onInput(e) {
const value = e.detail.value;
this.setData({
inputValue: value
});
this.filterOptions(value);
},
// 过滤选项
filterOptions(keyword) {
const filtered = this.data.allOptions.filter(item =>
item.includes(keyword)
);
this.setData({
filteredOptions: filtered
});
},
// 显示弹出层
showPopup() {
this.setData({
showPopup: true,
filteredOptions: this.data.allOptions // 显示所有选项
});
},
// 关闭弹出层
onClosePopup() {
this.setData({
showPopup: false
});
},
// 选择选项
selectOption(e) {
const selectedValue = e.currentTarget.dataset.value;
this.setData({
inputValue: selectedValue,
showPopup: false
});
}
});