JSON Jquery不区分大小写的匹配 [英] JSON Jquery Case Insensitive Matching
问题描述
我有以下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
推荐答案
编辑:代码中的一些改进
- val和
val.substring(0,len)
相同,因此您不需要做子字符串,因为len是根据val计算得出的. -
使用子字符串并获取val的确切长度时不需要搜索.因此您可以进行简单的
==
比较
- val and
val.substring(0,len)
is same so you don't need to do do substring as len is calculated from val. 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屋!