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

时间:2012-05-18 14:34:21

标签: 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>

我使用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 个答案:

答案 0 :(得分:23)

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

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

没用。然而

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

请点击此处了解更多详情: jQuery .val() setter not working?

答案 3 :(得分:0)

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

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