実際に出力されるスクリプトは↓なのですが、
<input name="commit" onclick="
if (window.hiddenCommit) {
window.hiddenCommit.setAttribute('value', this.value);
}
else {
hiddenCommit = this.cloneNode(false);
hiddenCommit.setAttribute('type', 'hidden');
this.form.appendChild(hiddenCommit);
}
this.setAttribute('originalValue', this.value);
this.disabled = true;
this.value='検索処理中...';
result = (this.form.onsubmit ? (this.form.onsubmit() ? this.form.submit() : false) : this.form.submit());
if (result == false) {
this.value = this.getAttribute('originalValue');
this.disabled = false;
}
return result;"
type="submit" value="検索" />
この中で、
hiddenCommit.setAttribute('type', 'hidden');
がエラーになります。
で、W3CのDOM Level1仕様
http://www.w3.org/TR/REC-DOM-Level-1/level-one-html.html#ID-798055546
の「Interface HTMLInputElement」を見ると、type属性はreadonlyなんですよね。
ということはFireFox3で動作しているのがたまたまで、本来のDOM仕様的には動作しない方(IEのエラー)が正しいということでしょうか?
":disable_with"オプション付与時の処理は、
actionpack-2.0.2 → actionpack-2.1.1 → actionpack-2.1.2
で、改造されてきているようですが、この問題の処理が組み込まれたのはactionpack-2.1.2からでした。
#該当ファイルは、
#actionpack-2.x.x\lib\action_view\helpers\form_tag_helper.rb
ともあれ、IEでの動作確認を全くしないで組み込んでいるとしか思えないですね。「がっくし」しちゃいます・・・