Jquery 浏览器问题搜索代码在Firefox中有效,而不是在Internet Explorer中

Jquery 浏览器问题搜索代码在Firefox中有效,而不是在Internet Explorer中,jquery,internet-explorer,Jquery,Internet Explorer,我对浏览器有问题,我在JSFIDLE中有代码,它通过提供输入来显示匹配结果。 但它在FF中运行良好,而不是在IE中 JSFIDLE中的jquery版本是jquery 1.9.1 伊弗。9,FF版本24.0 $("#searchInput").keyup(function () { //split the current value of searchInput var data = this.value.toLowerCase().split(" "); //creat

我对浏览器有问题,我在JSFIDLE中有代码,它通过提供输入来显示匹配结果。 但它在FF中运行良好,而不是在IE中

JSFIDLE中的jquery版本是jquery 1.9.1 伊弗。9,FF版本24.0

$("#searchInput").keyup(function () {
    //split the current value of searchInput
    var data = this.value.toLowerCase().split(" ");

    //create a jquery object of the rows
    var jo = $("#selectbox").find("option");
    if (this.value == "") {
        jo.show();
        return;
    }
    //hide all the rows
    jo.hide();

    //Recusively filter the jquery object to get results.
    jo.filter(function (i, v) {
        var $t = $(this);
        for (var d = 0; d < data.length; ++d) {
            if ($t.is(":contains('" + data[d] + "')")) {
                return true;
            }
        }
        return false;
    })
    //show the rows that match.
    .show();
});
$(“#搜索输入”).keyup(函数(){
//拆分searchInput的当前值
var data=this.value.toLowerCase().split(“”);
//创建行的jquery对象
var jo=$(“#选择框”).find(“选项”);
如果(this.value==“”){
jo.show();
返回;
}
//隐藏所有行
jo.hide();
//循环过滤jquery对象以获得结果。
jo.filter(函数(i,v){
var$t=$(本);
对于(变量d=0;d
试试这个:

// on keydown on text box
$("#txtInput").on("keyup", function (e) {                   
    var txt = $(this).val().toLowerCase();  

    //if backspace pressed refresh list
    if (e.which == 8) {
        if (txt.length == 0) {
            renderList(arrText);
        }
    }

    if (txt.length >= 1) {
        var filterList = searchInList(arrText, txt);
        if (filterList.length > 0) {
            renderList(filterList);
        } else {            
            renderList(arrText);
        }
    }                     
});
也可以在IE9中使用,请在此处拨弄:

尝试以下操作:

// on keydown on text box
$("#txtInput").on("keyup", function (e) {                   
    var txt = $(this).val().toLowerCase();  

    //if backspace pressed refresh list
    if (e.which == 8) {
        if (txt.length == 0) {
            renderList(arrText);
        }
    }

    if (txt.length >= 1) {
        var filterList = searchInList(arrText, txt);
        if (filterList.length > 0) {
            renderList(filterList);
        } else {            
            renderList(arrText);
        }
    }                     
});

也可以在IE9中使用,请在此处拨弄:

您是否检查了控制台的错误?此外,请更好地描述问题,而不是“它不起作用”。你期望发生什么?发生了什么事?我在选择框中有数据,当我输入数据时,它与选择框中的可用数据匹配并给出结果。您可以在FF中看到结果。当我在IEE中调试时,控制台中没有任何错误。我认为IE不允许隐藏选项元素。如果您尝试
$(“选项”).hide()
或直接在CSS中使用
选项{display:none;}
什么都不发生。。。我隐约记得几个月前曾研究过这个问题,我认为解决方案基本上是
.detach()
这些选项,而不是隐藏它们,然后根据需要重新插入它们。@nnnnnn我也可以使用.detach()。那不是我建议的。您必须保留对分离项目的引用,以便以后可以重新插入它们。您还必须更改.show()代码。换句话说,您必须停下来思考分离和重新插入选项如何有助于产生所需的效果,并适当地重新构造代码。您是否检查了控制台中的错误?此外,请更好地描述问题,而不是“它不起作用”。你期望发生什么?发生了什么事?我在选择框中有数据,当我输入数据时,它与选择框中的可用数据匹配并给出结果。您可以在FF中看到结果。当我在IEE中调试时,控制台中没有任何错误。我认为IE不允许隐藏选项元素。如果您尝试
$(“选项”).hide()
或直接在CSS中使用
选项{display:none;}
什么都不发生。。。我隐约记得几个月前曾研究过这个问题,我认为解决方案基本上是
.detach()
这些选项,而不是隐藏它们,然后根据需要重新插入它们。@nnnnnn我也可以使用.detach()。那不是我建议的。您必须保留对分离项目的引用,以便以后可以重新插入它们。您还必须更改.show()代码。换句话说,你必须停下来思考分离和重新插入选项如何有助于产生你想要的效果,并适当地重构代码。隐藏/显示选项我认为只在firefox中有效,在我的浏览器中,chrome和ie9你的小提琴也不起作用。隐藏/显示选项我认为只在firefox中有效,在我的浏览器中,chrome和ie9也无法使用。