JSON Jquery不区分大小写的匹配 [英] JSON Jquery Case Insensitive Matching

查看:259
本文介绍了JSON Jquery不区分大小写的匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下JSON和Jquery代码:

I have the following JSON and Jquery Code:

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" width="25" id="myInput">
        <ul id="myList"></ul>
    </body>
</html>

我想做什么

当我在M/P/S之类的输入字段中键入字符时,它应循环遍历JSON文件并返回匹配结果.所以,

When I type a character in the input field such as M/P/S, it should loop through the JSON file and return matching results. So,

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

问题

当前,我的代码正在运行.但仅当我输入大写字母时才可以.如果我输入m/p/s,则不会返回任何内容.

Currently, my code is working. BUT only when I input the characters in upper case. If I type in m/p/s, it does not return anything.

如何使该大小写不区分大小写,从而使其对两者都适用

  • M/P/S
  • m/p/s

推荐答案

编辑:代码中的一些改进

  1. val和val.substring(0,len)相同,因此您不需要做子字符串,因为len是根据val计算得出的.
  2. 使用子字符串并获取val的确切长度时不需要搜索.因此您可以进行简单的==比较

  1. val and val.substring(0,len) is same so you don't need to do do substring as len is calculated from val.
  2. You don't need to do search as you use substring and get the exact length of val.. so you can do a simple == comparision

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

更新了 演示

如下更改您的for循环,

Change your for loop as below,

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

演示

这篇关于JSON Jquery不区分大小写的匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆