我只列出了部分数据  下面只要输入s (因为只有部分数据 所以只有输入s才能弹出) 即可弹出名字 
我自己测试的结果是 ie在if (str_ok[j].indexOf(a[i].name[k]) > -1) { 这句的时候一直弹出false
前几天知道ie容易丢this  这样感觉ie好像又丢了什么  我真想扁...~~~~<form id=form>
<input type=text id=a1 onkeyup=s() >
<ul id=ul></ul>
</form><script>
var a = {
            "BAAAA": {
                "id": "BAAAA",
                "name": "啊等分1",
                "image": "http://avatar.profile.csdn.net/9/A/2/2_fosjos.jpg",
                "groups": "0"
            },
            "BAAAb": {
                "id": "BAAAb",
                "name": "飞机",
                "image": "http://www.csdn.net/Images/logo_csdn.gif",
                "groups": "0"
            },
            "BAAAC": {
                "id": "BAAAC",
                "name": "李鼎荣",
                "image": "http://www.google.cn//logos/tetris09.gif",
                "groups": "0"
            },
            "BAAAd": {
                "id": "BAAAd",
                "name": "三等分2",
                "image": "http://hdn511.xnimg.cn/photos/hdn511/20090411/09/40/tiny_HNeu_1313o204234.jpg",
                "groups": "0"
            }
            
        }

var str_ok={}
str_ok['sa']='卅挲撒洒脎萨飒'
str_ok['sai']='噻塞腮赛鳃'
str_ok['san']='三仨伞叁彡散毵糁馓'var a1=document.getElementById("a1")function s(){
var value = a1.value;
if (value.length == 0)return; for (var j in str_ok) {
for (var i in a) {
if (j.indexOf(value) == 0) {
for (var k = 0, l = a[i].name.length; k < l; k++) 
if (str_ok[j].indexOf(a[i].name[k]) > -1) {
alert(a[i].name)
}
}
}
}
}
</script>