gpt4 book ai didi

javascript - 动态添加的 JavaScript 在 IE 中找不到动态添加的字段

转载 作者:行者123 更新时间:2023-12-02 20:44:15 24 4
gpt4 key购买 nike

我有一个表,其中有一个“添加行”按钮。此按钮使用 JQuery 动态添加一行。它的工作原理是复制第一个...,然后用递增的数字替换所有 id=".."。

问题是行有一个 YUI AutoComplete,如下所示:

<td>
<input type="hidden" name="location_num[0]" value="508318" maxLength="25" style="width:230px" id="location_num[0]"/>
<input type="textbox" name="location_numDisplayDesc[0]" value="WINNIPEG" maxLength="25" style="width:230px" id="location_numDisplayDesc[0]"/>
<div id="Container_location_num[0]" style="display:inline;"></div>

<script type="text/javascript">

// Initialize autocomplete
var location_numAC = new YAHOO.widget.AutoComplete(
"location_numDisplayDesc[0]",
"Container_location_num[0]",
locationDataSource,
acConfig);

location_numAC.useShadow = true
location_numAC.useIFrame = true
location_numAC.dataErrorEvent.subscribe(acErrorFunction);

// Format results to include the reference number
location_numAC.formatResult = function(resultItem, query) {
return resultItem[0];
};

// Clear key before request
location_numAC.dataRequestEvent.subscribe(function fnCallback(e, args) {
YAHOO.util.Dom.get("location_num[0]").value = ""; });

// Set key on item select
location_numAC.itemSelectEvent.subscribe(function(event, args) {
YAHOO.util.Dom.get("location_num[0]").value = args[2][1];
});

// Clear key when description is cleared
location_numAC.textboxBlurEvent.subscribe(function fnCallback(e, args) {
if (isEmpty(YAHOO.util.Dom.get("location_numDisplayDesc[0]").value)) {
YAHOO.util.Dom.get("location_num[0]").value = "";
} // end if
});
</script>
</td>

此代码在 Firefox 中工作正常,新创建的自动完成工作正常,但在 IE(6 和 7)中,我收到一条错误,这意味着 location_num_AC 未成功创建。我相信这是因为它没有按应有的方式读取新创建的输入或 div 。我尝试用

包装 javascript
$("Container_location_num[0]").ready(function {...});

但这似乎不起作用。大家还有其他想法吗?

最佳答案

插入到 IE 中 DOM 中的表单字段不会像您期望的那样添加到表单集合中。

通常,您可以通过以下两种方式之一引用表单字段:

document.forms[0]["myFormName"];
document.forms[0][12];

也就是说,通过其表单字段名称或其索引。但是,当您添加表单字段到 IE 中的 DOM 时,您不能通过名称引用它,只能通过其索引引用它。如果您的代码(或任何支持代码)正在通过名称在集合中查找表单字段,那么您显然遇到了问题。

如果您唯一的键是名称,您可以按索引循环遍历所有表单字段并找到您要查找的内容,但这显然将是一个线性操作。您还可以循环查找哪些表单字段是按数字索引而不是按名称索引,然后自行更新表单对象。

我没有足够的细节来了解这种情况是如何(或是否)在您的项目中发生的,但这是 IE 的怪癖之一,听起来它可能在您动态添加字段时发挥作用。

关于javascript - 动态添加的 JavaScript 在 IE 中找不到动态添加的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1703909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com