【发布时间】:2014-06-21 04:11:46
【问题描述】:
我有一个创建自动完成功能的函数。在正常情况下它工作得很好。函数调用的一个例子是:
getList('employee', { type: 'auto', id: 'txtMgrID', callback: function (id) { $('#hidMgrID').val(id); } });
这个函数调用对我来说很好用——它的作用是使用员工列表为文本输入元素 txtMgrID 创建一个自动完成功能。 “回调”在自动完成上设置选择功能 - 在此示例中,使用自动完成 id 值设置隐藏输入元素“hidMgrID”。再次 - 通常工作得很好(在我的网站上的多个地方运行它。)
我遇到的问题是当我在循环中构建它时。我有一个包含多个员工自动完成的对话框窗口。因此,我正在使用循环构建对话框部分(因此它会创建 txtMgr0 - txtMgr4 以及 hidMgrID0 - hidMgrID4)。并且对话框可以创建任意数量的这些(取决于给定经理有多少直接员工),这就是我使用循环来执行此操作的原因。
对话框打开后,我使用另一个 for 循环来进行自动完成创建调用。我的确切代码是:
for (x = 0; x < mgrcnt; x++) {
getList('employee', { type: 'auto', id: 'txtMgr' + x, callback: function (id) { $('#hidMgrID'+x).val(id); } });
}
现在,我遇到的问题是所有自动完成文本框都更新了 LAST hidID ...就好像在我的示例中, $('#hidMgrID'+x) 评估为 $('#hidMgrID4')对于循环中的每个 getList 调用。奇怪的是,如果我在 get list 调用之前(作为循环的一部分)和回调函数引用(在 jquery .val 引用之前)和对话框加载时都发出警报调用,它会给我#hidMgrID0然后是 1,然后是 2,以此类推,然后当我在文本元素中输入经理时,它会为所有这些人发出 #hidMgrID4 警报。
我不明白为什么会发生这种情况......如果能帮助解决这个问题,我们将不胜感激!
提前致谢!
克里斯
【问题讨论】:
标签: javascript jquery for-loop autocomplete