JSON Jquery 不区分大小写匹配

Posted

技术标签:

【中文标题】JSON Jquery 不区分大小写匹配【英文标题】:JSON Jquery Case Insensitive Matching 【发布时间】:2012-03-15 03:55:29 【问题描述】:

我有以下 JSON 和 Jquery 代码:

JSON


    "employees":[
        
            "name": "Sandy"
        ,
        
            "name": "Megan"
        ,  
        
            "name": "Pat"
        ,
        
            "name": "Susan"
        
    ]

JQuery

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <script type="text/javascript" src="js/jquery-1.6.4.js"></script>
        <script type="text/javascript">
            $(document).ready(function()
                jQuery.ajax(
                    type: "GET",
                    url: "myJson.json",
                    dataType: "json",
                    async: "true",
                    contentType: "application/x-javascript; charset=utf-8",
                    cache: "false",
                    success: function(response)
                        $("input#myInput").live("keyup", function(e)

                            var val = $("input#myInput").val();
                            var len = $("input#myInput").val().length;

                            for (var x = 0; x < response.employees.length; x++) 

                                var empName = response.employees[x].name;
                                var valChar = val.substring(0, len);
                                var nameChar = empName.substring(0, len);

                                if (nameChar.search(valChar) != -1) 
                                    $("ul#myList").append("<li>" + empName + "</li>");
                                                               
                            
                        );
                    
                )
            )
        </script>
    </head>
    <body>
        <input type="text"  id="myInput">
        <ul id="myList"></ul>
    </body>
</html>

我想做的事

当我在 M/P/S 等输入字段中键入一个字符时,它应该循环遍历 JSON 文件并返回匹配结果。所以,

M 将返回梅根 S 将返回桑迪和苏珊 P 将返回 Pat

问题

目前,我的代码正在运行。但只有当我输入大写字符时。如果我输入 m/p/s,它不会返回任何内容。

我怎样才能使它不区分大小写,以便它适用于两者

月/月/秒 m/p/s

【问题讨论】:

在搜索(比较)之前强制两个字符串大小写相同,即全部小写。 添加“if(len === 0) return;”在开始循环之前,否则非字母键上的击键将导致生成所有名称。 【参考方案1】:

编辑:对您的代码进行了一些改进

    val 和val.substring(0,len) 是相同的,所以你不需要做子字符串,因为 len 是从 val 计算出来的。

    您不需要搜索,因为您使用子字符串并获得 val.. 的确切长度,因此您可以进行简单的== 比较

       for (var x = 0; x < resp.employees.length; x++) 
    
            var empName = resp.employees[x].name;
            var valChar = val.toLowerCase();
            var nameChar = empName.substring(0, len).toLowerCase();
    
            if (nameChar === valChar) 
                $("ul#myList").append("<li>" + empName + "</li>");
                                           
        
    

更新DEMO

如下更改你的 for 循环,

        for (var x = 0; x < resp.employees.length; x++) 

            var empName = resp.employees[x].name;
            var valChar = val.substring(0, len).toLowerCase();
            var nameChar = empName.substring(0, len).toLowerCase();

            if (nameChar.search(valChar) != -1) 
                $("ul#myList").append("<li>" + empName + "</li>");
                                           
        

DEMO

【讨论】:

【参考方案2】:

看看 .toUpperCase() IE, if(val.toUpperCase() == search.toUpperCase())

【讨论】:

以上是关于JSON Jquery 不区分大小写匹配的主要内容,如果未能解决你的问题,请参考以下文章

javascript json字段 区分大小写吗

Java - MongoDB不区分大小写不检查精确匹配

如何使 yarp 匹配路径不区分大小写?

Javascript匹配-不区分大小写[重复]

jquery 是不是区分大小写

如何在 Pig 中创建不区分大小写的匹配?