9

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

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 に答える