当用户在输入中输入时,我正在搜索表并相应地显示结果。
如果输入的输入长度至少大于或等于2,我已经设置了一个条件来检查。(但是在清除值之后它没有显示所有值?)
这是我的代码
$('#searchequip').keyup(function (){
if ($(this).val().length >= 2) {
$('#errmsgnoequip').hide();
var val = $.trim(this.value).toUpperCase();
var noElem = true;
$('.mt-checkbox').each(function (){
var parent = $(this).closest('li'),
length = $(this).text().length > 0;
if (length && $(this).text().search(new RegExp(val, 'i')) < 0)
{
parent.fadeOut('slow');
} else {
noElem = false;
parent.show();
}
});
if (noElem)
$('#errmsgnoequip').html('No Results Matched').show();
}
});
答案 0 :(得分:2)
代码中的变化很小,代码可以正常工作
14px
答案 1 :(得分:1)
当值的长度小于2时,您没有执行任何操作。因此不会显示隐藏的结果。
您可以在长度检查条件中添加else
子句。如果值的长度小于2并且按下的键是退格键,则显示所有内容。 (因此,如果长度为1但用户按了一个字母则无效)
$('#searchequip').keyup(function (e){
if ($(this).val().length >= 2) {
// your filter
} else if (e.keyCode == 8){ // 8 = backspace
$('.mt-checkbox').closest('li').show(); // show everything hidden
}
}
答案 2 :(得分:1)
$('#searchequip').keyup(function (){
if ($(this).val().length >= 2) {
$('#errmsgnoequip').hide();
var val = $.trim(this.value).toUpperCase();
var noElem = true;
$('.mt-checkbox').each(function (){
var parent = $(this).closest('li'),
length = $(this).text().length > 0;
if (length && $(this).text().search(new RegExp(val, 'i')) < 0)
{
parent.fadeOut('slow');
}else{
noElem = false;
parent.show();
}
});
if (noElem)
$('#errmsgnoequip').html('No Results Matched').show();
} else {
$("#equipdetails li").show();
$('#errmsgnoequip').html("");
}
});