jQuery的设置隐藏的输入值不能按预期工作在IE7和IE8(jquery setting hidd

2019-06-24 14:02发布

继续采用我的代码在IE工作...

我有一个隐藏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的值设置到田间地头。 我打开了编辑格功能看起来是这样的:

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,歌剧,WebKit和IE 9精细,但是在IE7和IE8,我有一个奇怪的问题。 我可以看到item_id正确设置在edit_item功能,但是一旦该功能完成后,隐藏的输入值( qid )被重置为空字符串。 当窗体被AJAX提交,警报显示值是,尽管它被正确地设置为空字符串。 有趣的是,所有其他字段都是精品。 和它的作品在正确的IE 9。

我缺少的是在这里吗? 提前谢谢了。

Answer 1:

这完全是愚蠢的,它不应该是不过的情况下,:

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

不工作。 然而

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

工作得很好。 我在那离开它。



Answer 2:

在纯JavaScript解决方案即不JQuery的不看太复杂:

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


Answer 3:

除了阿莱克斯G公司的答复,我才发现原来value属性不能被隐式的隐藏元素,以定义的jQuery .setAttr().val()在IE8的工作没有问题。

在这里看到更多的细节: jQuery的.VAL()setter方法不工作?



文章来源: jquery setting hidden input value not working as expected in IE7 and IE8