只是想确认我已经超出了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>
如果没有办法让这个工作?有人能提出其他的建议吗?请记住,可能会有大约8000个字段!如果没有,我最后的办法是自定义构建一个简单的ajax下拉菜单。
当前版本的jQuery自动完成插件实际上会接受URL,这使得ajax插件非常容易启动和运行。
看到