在这种情况下如何使自动完成退格工作

时间:2016-11-08 06:40:11

标签: jquery

当用户在输入中输入时,我正在搜索表并相应地显示结果。

如果输入的输入长度至少大于或等于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();
    }
});

http://jsfiddle.net/e08o7uct/34/

3 个答案:

答案 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("");        
    }
});