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 では正しく動作します。
ここで何が欠けていますか?よろしくお願いします。