我有以下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" width="25" id="myInput">
<ul id="myList"></ul>
</body>
</html>
我想做什么
当我在输入字段中键入一个字符(如M / P / S)时,它应循环遍历JSON文件并返回匹配的结果。所以,
问题
目前,我的代码正在运行。但只有当我以大写字母输入字符时。如果我输入m / p / s,则不会返回任何内容。
如何使这种不区分大小写的方式使其适用于
答案 0 :(得分:1)
修改:代码中的一些改进
val.substring(0,len)
是一样的,所以你不需要做substring,因为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>");
}
}
答案 1 :(得分:0)
看看.toUpperCase() IE浏览器, if(val.toUpperCase()== search.toUpperCase())