我设置了一个全局变量$ category_list,它是一个类别名称数组。
在页脚中我有:
<?php if ( isset($category_list) ): ?>
<script type="text/javascript">
var wordlist = [
<?php foreach ($category_list as $row) { echo '"' . $row->name . '", '; } ?>
];
</script>
<?php endif ?>
我有一个带有以下代码的外部.js文件:
jQuery( ".cats" ).autocomplete({
source: function(req, responseFn) {
var matches = new Array();
var needle = req.term.toLowerCase();
var len = wordlist.length;
for(i = 0; i < len; ++i)
{
var haystack = wordlist[i].toLowerCase();
if(haystack.indexOf(needle) == 0 ||
haystack.indexOf(" " + needle) != -1)
{
matches.push(wordlist[i]);
}
}
responseFn( matches );
}
});
IE8中发生错误,因此下拉列表不起作用:wordlist[...] is null or not an object
不知道如何解决这个问题,类别名称的下拉列表在IE 9,Firefox和Chrome中运行良好但在IE8上没有,影响了大约50%的IE用户。我正在使用Codeigniter框架。我已经尝试在外部文件之前加载页脚脚本但没有欢乐。
非常喜欢任何帮助&lt; 3
答案 0 :(得分:4)
IE8不喜欢在数组文字定义中尾随,
。您将不得不重构代码而不留下代码。
<?php
$rows = array();
foreach ($category_list as $row) { $rows[] = '"' . $row->name . '"'; }
echo implode(',', $rows);
?>
或
var wordlist = <?php
$rows = array();
foreach ($category_list as $row) { $rows[] = '"' . $row->name . '"'; }
echo json_encode($rows);
?>;