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 不区分大小写匹配的主要内容,如果未能解决你的问题,请参考以下文章