Flexdatalist jQuery插件searchIn选项能否指定自定义搜索属性?
如何在Flexdatalist中自定义搜索范围(包含自定义data属性)
可以实现,但默认的searchIn选项无法直接识别自定义的data-*属性,需要通过以下两种方式之一来实现你的需求:
方法1:预处理数据源,将自定义属性纳入搜索字段
先把<option>的data-keyword属性值提取出来,构建包含该字段的数据源,之后就能直接在searchIn中指定这个自定义字段:
<datalist id="myDatalist"> <option value="exemple1" data-keyword="test example">Example1</option> <option value="exemple2" data-keyword="real example">Example2</option> </datalist> <input type="text" class="flexdatalist" list="myDatalist">
// 预处理datalist选项,构建完整数据源 const customData = []; $('#myDatalist option').each(function() { customData.push({ value: $(this).val(), label: $(this).text().trim(), keywords: $(this).data('keyword') || '' }); }); // 初始化Flexdatalist $('.flexdatalist').flexdatalist({ minLength: 1, selectionRequired: true, searchContain: true, searchByWord: true, data: customData, // 使用预处理后的数据源 searchIn: ['label', 'keywords'], // 同时搜索label和自定义的keywords字段 noResultsText: 'No result for {keyword}' });
这种方式完全贴合插件的默认逻辑,后续维护起来更直观。
方法2:自定义searchFn搜索函数
如果不想修改数据源,可以通过searchFn选项手动实现搜索逻辑,直接检查每个选项的label和data-keyword属性:
<datalist id="myDatalist"> <option value="exemple1" data-keyword="test example">Example1</option> <option value="exemple2" data-keyword="real example">Example2</option> </datalist> <input type="text" class="flexdatalist" list="myDatalist">
$('.flexdatalist').flexdatalist({ minLength: 1, selectionRequired: true, searchContain: true, searchByWord: true, noResultsText: 'No result for {keyword}', // 自定义搜索逻辑 searchFn: function(keyword, item, options) { // 找到当前item对应的原始option元素 const option = this.$datalist.find(`option[value="${item.value}"]`); const keywordAttr = option.data('keyword') || ''; const lowerKeyword = keyword.toLowerCase(); // 检查label是否匹配 const labelMatch = item.label.toLowerCase().includes(lowerKeyword); // 检查data-keyword中的任意关键词是否匹配(适配searchByWord: true) const keywordMatch = keywordAttr.split(' ').some(word => word.toLowerCase().includes(lowerKeyword) ); // 满足任一条件即视为匹配 return labelMatch || keywordMatch; } });
这个方法更灵活,适合需要动态调整搜索规则的场景。
内容的提问来源于stack exchange,提问作者SunnyBenji
相关产品推荐
相关产品推荐

