【发布时间】:2012-05-26 03:27:22
【问题描述】:
继续采用我的代码来使用 IE...
我有一个隐藏的div,其中包含一个用于编辑某些信息的表单。当用户选择要编辑的项目时,会显示此 div,并使用项目的信息填充字段。那个 div(简而言之)看起来像这样:
<div id="editform">
<form action="" method="post" id="qform" name="qform">
First param: <input name="field1" id="field1"/> <br/>
Second param: <input name="field2" id="field2"/> <br/>
...
<input type="hidden" name="qid" id="qid" value=""/>
<img id="submit" src="..." alt="..." title="..." />
</form>
我使用 jquery 将值设置到字段中。我打开编辑 div 的功能如下所示:
function edit_item(item_id) {
item = get_item(item_id); //this will return a JS object
$('#field1').val(item.property1);
$('#field2').val(item.property2);
...
$('#qid').val(item_id);
$('#submit').click(function() {
alert($('#qid').val());
$('#qform').ajaxSubmit();
});
}
所有这些在 FF、Opera、Webkit 和 IE 9 中都可以正常工作,但是在 IE7 和 IE8 中,我遇到了一个奇怪的问题。我可以看到在edit_item 函数中正确设置了item_id,但是一旦该函数完成,隐藏的输入值(qid)就会重置为空字符串。当表单被 ajax 提交时,尽管设置正确,但警报显示该值是一个空字符串。有趣的是,所有其他领域都很好。它在 IE 9 中也能正常工作。
我在这里缺少什么?非常感谢。
【问题讨论】:
-
ID 在 HTML 规范中必须是唯一的。您有多个“#field1”。此外,ID 不能以井号开头。见:stackoverflow.com/questions/448981/…
-
感谢您的评论,但这不是问题所在。在我的真实代码中,两者都是有效的:唯一的 ID 和没有井号 - 为问题创建简化代码时的拼写错误。
-
也许 edit_item 函数被错误的 item_id 参数再次触发?您是否尝试添加警报(item_id);行到 edit_item 函数?
-
@Сергій 如果是这样,它在 IE9 和其他浏览器中将无法工作,但在除 IE 7 和 8 之外的所有浏览器中都可以。
标签: javascript jquery internet-explorer html-input