jquery设置隐藏的输入值在IE7和IE8中无法正常工作

继续采用我的代码来使用IE https://stackoverflow.com/questions/10654595/jquery-setting-hidden-input-value-not-working-as-expected-in-ie7-and-ie8/…

我有一个隐藏的div包含一个表单来编辑一些信息。 当用户选择要编辑的项目时,将显示此div,并使用该项目的信息填充字段。 div(简化术语)看起来像这样:

 
First param:
Second param:
https://stackoverflow.com/questions/10654595/jquery-setting-hidden-input-value-not-working-as-expected-in-ie7-and-ie8/... http://sofzh.miximages.com/javascript/..

我使用jquery将值设置为字段。 我打开编辑div的function看起来像这样:

 function edit_item(item_id) { item = get_item(item_id); //this will return a JS object $('#field1').val(item.property1); $('#field2').val(item.property2); https://stackoverflow.com/questions/10654595/jquery-setting-hidden-input-value-not-working-as-expected-in-ie7-and-ie8/... $('#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中正常工作。

我在这里想念的是什么? 提前谢谢了。

这完全是愚蠢的,但事实并非如此:

 $('#field1').val(item.property1); 

不工作。 然而

 $('#field1').attr("value", item.property1); 

工作得很好。 我就离开了。

在纯JavaScript中没有JQuery的IE解决方案看起来并不太复杂:

 document.getElementById(id).setAttribute('value', value); 

除了Aleks G的答案之外,我发现不能在隐藏元素中隐式定义value属性,以便jQuery .setAttr().val()在IE8中没有问题。

有关更多详细信息,请参阅此处: jQuery .val()setter无法正常工作?