【发布时间】:2011-05-04 00:45:06
【问题描述】:
只是想确认我已经超出了 jQuery UI 自动完成组合框的实际限制,我在 FF 中收到以下错误:
此页面上的脚本可能正忙,或者 它可能已停止响应。你 现在可以停止脚本,打开 调试器中的脚本,或者让 脚本继续。
该页面是一个由 php 生成的大表(2000 多行),每行将包含 7 个这些组合框(7 列),但是我几乎无法通过集合的第一列。该页面将加载并运行,但需要几分钟,并且浏览器会在一段时间内无响应。
有没有办法改变 JS 以提高效率?下面是一个 JS 示例,我使用 php 将数组插入到脚本中(第 3 行)。
代码:
<script type='text/javascript'>
var input = new Array();
var i = 1;
<?php echo $JSElements; ?> //PHP
$('.TC_1').each(function(index) {
input[i] = $("[name=TC_"+i+"_1]").autocomplete({
source: elementArray,
select: function(){alert("selected");},
minLength: 0
}).addClass("ui-widget ui-widget-content ui-corner-left");
//Get the id for the target field:
var target = $(input[i]).attr('name');
var ID = target.substr(3);
$("<button id='bt_"+ID+"' type='button'> </button>")
.attr("tabIndex", -1)
.attr("title", "Show All Items")
.insertAfter(input[i])
.button({
icons: {
primary: "ui-icon-triangle-1-s"
},
text: false
})
.removeClass("ui-corner-all")
.addClass("ui-corner-right ui-button-icon")
.click(function() {
// close if already visible
if ($("[name=TC_"+ID+"]").autocomplete("widget").is(":visible")) {
$("[name=TC_"+ID+"]").autocomplete( "close" );
return;
}
$(this).blur();
$("[name=TC_"+ID+"]").autocomplete("search", "" );
$("[name=TC_"+ID+"]").focus();
});
i++;
});
</script>
如果没有办法让它工作?任何人都可以提出任何替代方案吗?请记住,可能会有大约 8,000 个字段!如果没有,我最后的办法是自定义构建一个简单的 ajax 下拉菜单。
【问题讨论】:
标签: jquery user-interface autocomplete combobox