我想user_id
从所有列表数据中查找。
当我搜索user_id
,我将复制user_id
自excel
并将其粘贴到textarea
。
然后user_id
我选择的全部必须与user_id
全部匹配list data
。
这是我的代码
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea name="" id="paste_your_id"></textarea>
<ul class="ul-list">
<li data-id="1">Mr. A</li>
<li data-id="2">Mr. B</li>
<li data-id="3">Mr. C</li>
<li data-id="4">Mr. D</li>
<li data-id="5">Mr. E</li>
<li data-id="6">Mr. F</li>
<li data-id="7">Mr. G</li>
</ul>
输出
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea name="" id="paste_your_id">1
2
3
7</textarea>
<ul class="ul-list">
<li data-id="1">Mr. A</li>
<li data-id="2">Mr. B</li>
<li data-id="3">Mr. C</li>
<li data-id="4" style="display:none;">Mr. D</li>
<li data-id="5" style="display:none;">Mr. E</li>
<li data-id="6" style="display:none;">Mr. F</li>
<li data-id="7" >Mr. G</li>
</ul>
非常感谢
您可以通过这种简单的方法来实现
var userList = $(".ul-list").find("li").toArray(); // Store list of userId value here
$("#paste_your_id").on("keyup", function()
{
var strIds = $(this).val();
var arrayIds = strIds.split(/[^\d]+/); // Split each item by `whitespace` or `by line`
var isFilter = arrayIds.filter(item => item !== "").length > 0;
userList.forEach(item =>
{
var id = $(item).data("id").toString();
var isShow = !isFilter || arrayIds.indexOf(id) !== -1;
$(item).toggle(isShow);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea name="" id="paste_your_id"></textarea>
<ul class="ul-list">
<li data-id="1">Mr. A</li>
<li data-id="2">Mr. B</li>
<li data-id="3">Mr. C</li>
<li data-id="4">Mr. D</li>
<li data-id="5">Mr. E</li>
<li data-id="6">Mr. F</li>
<li data-id="7">Mr. G</li>
</ul>
更新
通过这种方式display:block
删除文本时,您的列表数据可以还原为textarea
var isFilter = arrayIds.filter(item => item !== "").length > 0;
使用.toggle()更优雅
我在JS代码中提到的一些注释可提高性能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句