Javascript jquery设置隐藏的输入值在IE7和IE8中未按预期工作
继续采用我的代码与IE一起工作 我有一个隐藏的Javascript jquery设置隐藏的输入值在IE7和IE8中未按预期工作,javascript,jquery,internet-explorer,html-input,Javascript,Jquery,Internet Explorer,Html Input,继续采用我的代码与IE一起工作 我有一个隐藏的div,其中包含一个表单来编辑一些信息。当用户选择要编辑的项时,将显示此div,并用该项的信息填充字段。div(简而言之)如下所示: <div id="editform"> <form action="" method="post" id="qform" name="qform"> First param: <input name="field1" id="field1"/> <br/>
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>
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和IE9中都可以正常工作,但是在IE7和IE8中,我遇到了一个奇怪的问题。我可以看到编辑项目
功能中正确设置了项目id
,但是一旦该功能完成,隐藏的输入值(qid
)就会重置为空字符串。在ajax提交表单时,尽管设置正确,但警报将值显示为空字符串。有趣的是,所有其他领域都很好。它在IE9中正常工作
我错过了什么?事先非常感谢。这完全是愚蠢的,但不应该是这样:
$('#field1').val(item.property1);
不起作用。然而
$('#field1').attr("value", item.property1);
很好。我就到此为止。在纯JavaScript中没有JQuery的IE解决方案看起来并不太复杂:
document.getElementById(id).setAttribute('value', value);
除了Aleks G的回答之外,我发现
value
attribute不能在隐藏元素中隐式定义,以便jQuery.setAttr()
和.val()
在IE8中正常工作
有关更多详细信息,请参见此处:
我知道我迟到了,但我使用了以下变通方法,因为在尝试了所有解决方案后,它对我不起作用
var id=$(this).data('id');
$('#update_entery_div').append(
"<input type='hidden' name='id' value="+id+" >"
);
var id=$(this).data('id');
$('update_entry_div')。追加(
""
);
ID在HTML规范中必须是唯一的。您有多个“#field1”。此外,ID不能以哈希标记开头。请参阅:感谢您的评论,但这不是问题所在。在我的真实代码中,这两种方法都是有效的:唯一ID和无哈希符号-在为问题创建简化代码时键入错误。是否再次使用错误的item\u ID参数启动了edit\u item函数?您是否尝试添加警报(项目id);行编辑_项函数?@СССССГіl如果是这种情况,它在IE9和其他浏览器中不起作用,但在除IE 7和IE 8之外的所有浏览器中都可以。@NullVoid刚刚再次检查过-第二个选项在IE 6、7、8、9和IE 10中对我有效。@AleksG,+1我也是这样。对我也为我工作。一些IE浏览器缓存问题:(但最终奏效:)疯狂。我刚刚在Mac上的Chrome52上遇到了同样的问题。在2016年。哇,为什么这是有效的,而不是常规的el.value=value语法?