Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery设置隐藏的输入值在IE7和IE8中未按预期工作_Javascript_Jquery_Internet Explorer_Html Input - Fatal编程技术网

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

Javascript jquery设置隐藏的输入值在IE7和IE8中未按预期工作,javascript,jquery,internet-explorer,html-input,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/>

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


我错过了什么?事先非常感谢。

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

$('#field1').val(item.property1);
不起作用。然而

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

很好。我就到此为止。

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

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

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

有关更多详细信息,请参见此处:

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

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

ID在HTML规范中必须是唯一的。您有多个“#field1”。此外,ID不能以哈希标记开头。请参阅:感谢您的评论,但这不是问题所在。在我的真实代码中,这两种方法都是有效的:唯一ID和无哈希符号-在为问题创建简化代码时键入错误。是否再次使用错误的item\u ID参数启动了edit\u item函数?您是否尝试添加警报(项目id);行编辑_项函数?@СССССГіl如果是这种情况,它在IE9和其他浏览器中不起作用,但在除IE 7和IE 8之外的所有浏览器中都可以。@NullVoid刚刚再次检查过-第二个选项在IE 6、7、8、9和IE 10中对我有效。@AleksG,+1我也是这样。对我也为我工作。一些IE浏览器缓存问题:(但最终奏效:)疯狂。我刚刚在Mac上的Chrome52上遇到了同样的问题。在2016年。哇,为什么这是有效的,而不是常规的el.value=value语法?