Web サイトで最新の Internet Explorer 9 Beta をテストしているところです。一部のフォーム値で奇妙な動作が見られますが、これが私のミスなのか IE9 のバグなのかわかりません。どう思いますか?
このようないくつかの非表示の入力フィールドを宣言する1つのフォームがあります
<input type="hidden" name="NewStatus" />
<input type="hidden" name="lastSaveStatus" value="" />
ページが送信されると、値は次のように (JavaScript で) 保存されます。
newStatus.setAttribute("value", myNewStatus);
var formLastStatus = document.getElementsByName("lastSaveStatus")[0];
formLastStatus.setAttribute("value", lastSaveStatus);
alert(lastSaveStatus);
alert(formLastStatus.getAttribute("value"));
var form = document.getElementById("myForm");
form.submit();
そのコードは何年もの間、すべてのブラウザーで機能しています。アラートは、lastSaveStatus フィールドに問題があることを示しています。IE9 では、NewStatus がサーバーに正しく送信されます (Request.Form["NewStatus"] を使用して ASP.NET の値にアクセスできることを意味します)。ただし、「lastSaveStatus」の値は常に「」です。
ご覧のとおり、非表示フィールドの定義で value="" を使用しました。このデフォルト値を削除すると、新しい値がサーバーに正しく転送されます。デフォルト値を使用すると、常にデフォルト値が転送されます。
なぜこれが起こっているのですか?