9

继续采用我的代码与 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 中,我遇到了一个奇怪的问题。我可以看到函数item_id中的设置正确edit_item,但是一旦该函数完成,隐藏的输入值 ( qid) 就会重置为空字符串。当表单被 ajax 提交时,尽管设置正确,但警报显示该值是一个空字符串。有趣的是,所有其他领域都很好。它在 IE 9 中可以正常工作。

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

4

4 回答 4

23

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

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

不工作。然而

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

工作正常。我把它留在那里。

于 2012-06-18T09:11:23.017 回答
1

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

document.getElementById(id).setAttribute('value', value);
于 2014-01-28T12:32:11.667 回答
1

除了 Aleks G 的回答之外,我发现不能value在隐藏元素中隐式定义属性,以便 jQuery和在 IE8 中正常工作。.setAttr().val()

有关更多详细信息,请参见此处: jQuery .val() setter not working?

于 2014-09-05T22:35:11.877 回答
0

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

var id=$(this).data('id');
$('#update_entery_div').append(
                "<input type='hidden' name='id' value="+id+" >"
            );
于 2021-04-13T14:07:09.217 回答