我有一个 html,我可以在其中根据他们的数据进行过滤,但我不知道如何组合它。
这是我的脚本,搜索名称已经可以使用,但是单选按钮 isActive
仍然无法使用,需要添加到我的过滤器中。我不知道如何过滤它。
$('input[type=text][name=search_name').on('input', function(e) {
e.stopPropagation();
e.preventDefault();
var fullname = $(this).val();
var isActive = $('input[type=radio][name=isActive]').val();
searchStudent(fullname, isActive);
});
$('input[type=radio][name=isActive]').on('change', function(e) {
e.stopPropagation();
e.preventDefault();
var fullname = $('input[type=text][name=search_name').val();
var isActive = $(this).val();
searchStudent(fullname, isActive);
});
function searchStudent(fullname, isActive) {
$("ul li").each(function() {
// I don't know how to add the isActive
if ($(this).data('fullname').search(new RegExp(fullname, "i")) < 0) {
$(this).hide();
} else {
$(this).show();
}
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<input type="text" name="search_name">
<span><input type="radio" checked="" autocomplete="off" value="2" name="isActive"> All</span>
<span><input type="radio" autocomplete="off" value="1" name="isActive"> Active</span>
<span><input type="radio" autocomplete="off" value="0" name="isActive"> Inactive</span>
</div>
<ul>
<li data-fullname="Jerald Patalinghug" data-firstname="Jerald" data-lastname="Patalinghug" data-isActive="1">Jerald Patalinghug</li>
<li data-fullname="Eldrin Gok-ong" data-firstname="Eldrin" data-lastname="Gok-ong" data-isActive="1">Eldrin Gok-ong</li>
<li data-fullname="Uelmar Ortega" data-firstname="Uelmar" data-lastname="Ortega" data-isActive="0">Uelmar Ortega</li>
</ul>
所以当我选择all = 2
时,我会看到所有人,active = 1
我会看到活跃的,然后是inActive = 0
查看不活跃的人。
最佳答案
我建议使用一个 update
函数,当输入或 textField 都发生变化时调用该函数。
在此 update
函数中,您将查询选中的复选框和文本字段。
其他解决方案将意味着记录选择的值或预先选择相关元素以避免每次都查询 DOM,但在我看来,这是不值得的。
$('input[type=text][name=search_name').on('input', updateFilter);
$('input[type=radio][name=isActive]').on('change', updateFilter);
function updateFilter(){
var fullname = $('input[type=text][name=search_name').val();
var isActive = $('input[type=radio][name=isActive]:checked').val();
searchStudent(fullname, +isActive);
}
function searchStudent(fullname, isActive) {
$("ul li").each(function() {
if ($(this).data('fullname').search(new RegExp(fullname, "i")) < 0
|| isActive !== 2 && +$(this).data('isactive') !== isActive) {
$(this).hide();
} else {
$(this).show();
}
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<input type="text" name="search_name">
<span><input type="radio" checked="true" autocomplete="off" value="2" name="isActive"> All</span>
<span><input type="radio" autocomplete="off" value="1" name="isActive"> Active</span>
<span><input type="radio" autocomplete="off" value="0" name="isActive"> Inactive</span>
</div>
<ul>
<li data-fullname="Jerald Patalinghug" data-firstname="Jerald" data-lastname="Patalinghug" data-isActive="1">Jerald Patalinghug</li>
<li data-fullname="Eldrin Gok-ong" data-firstname="Eldrin" data-lastname="Gok-ong" data-isActive="1">Eldrin Gok-ong</li>
<li data-fullname="Uelmar Ortega" data-firstname="Uelmar" data-lastname="Ortega" data-isActive="0">Uelmar Ortega</li>
</ul>
关于javascript - 如何使用 jquery/javascript 过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38607702/