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

Ale*_*s G 9 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/>
    Second param: <input name="field2" id="field2"/> <br/>
    ...

    <input type="hidden" name="qid" id="qid" value=""/>

    <img id="submit" src="..." alt="..." title="..." />
</form>
Run Code Online (Sandbox Code Playgroud)

我使用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();
    });
}
Run Code Online (Sandbox Code Playgroud)

所有这些在FF,Opera,Webkit和IE 9中运行良好,但在IE7和IE8中,我遇到了一个奇怪的问题.我可以item_idedit_item函数中看到正确设置,但是一旦该函数完成,隐藏的输入值(qid)就会重置为空字符串.当表单被ajax提交时,警报会将值显示为空字符串,尽管它已正确设置.有趣的是,所有其他领域都很好.它在IE 9中正常工作.

我在这里错过了什么?提前谢谢了.

Ale*_*s G 23

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

$('#field1').val(item.property1);
Run Code Online (Sandbox Code Playgroud)

不工作.然而

$('#field1').attr("value", item.property1);
Run Code Online (Sandbox Code Playgroud)

工作得很好.我要离开了.

  • 有些时候浏览器为让设计师/开发人员的生活变得可怕而自豪...... !!! (9认同)