jquery设置隐藏的输入值在IE7和IE8中未按预期工作

jquery setting hidden input value not working as expected in IE7 and IE8

本文关键字:IE8 工作 IE7 隐藏 设置 输入 jquery      更新时间:2023-09-26

继续采用我的代码与IE一起使用...

我有一个隐藏div,其中包含一个用于编辑某些信息的表单。 当用户选择要编辑的项目时,将显示此div,并在字段中填充项目的信息。 该divs(简化术语(如下所示:

<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中可以正常工作。

我在这里错过了什么? 提前非常感谢。

这是完全愚蠢的,但是不应该是这样:

$('#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 不起作用?

我知道

我迟到了,但我使用以下解决方法,因为在尝试所有解决方案后它对我不起作用

var id=$(this).data('id');
$('#update_entery_div').append(
                "<input type='hidden' name='id' value="+id+" >"
            );