OS:WindowsXP SP3、ブラウザ:IE6 SP2
JavaScriptを使用も可、
readonly属性への代替は不可(理由:HTMLはXMLをインプットにして自動で出力される為勝手に変更ができない[XMLからHTMLに自動変換するソフトがreadonly属性を翻訳できない]。そのHTMLに対してCSSを当てることで変更をしないといけない為)
xml→html変換ソフトの存在がいまひとつわかってませんが、
htmlに変換後、Javascriptでreadonryに変更するのはどうでしょうか?
<html> <head> <title></title> </head> <body> <form> <input name="abc" type="text" value="文字列" disabled > <input type="submit" value="送信"> </form> <!-- ページ 末期に以下のスクリプトを挿入しておく --> <script type="text/javascript"> // 全ての<input type="text" disabled>を処理する var l=document.getElementsByTagName('input'); for(var i=0;l[i];i++){ if(l[i].type=="text" && l[i].disabled) { l[i].name=""; // nameを削除することで無効化(disabledに準ずるようにする) l[i].disabled = false; // 色変更が効くようにするためにdisabledは取り消し l[i].readOnly = true; // 内容書き換えが出来ないようにreadonlyに設定 l[i].style.backgroundColor = '#ebebe4'; l[i].style.border = 'solid #7f9db9 1px'; // disabledっぽく見せるため 背景、ボーダーを指定 } } </script> </body> </html>
URLはダミーです
IE6がdisable属性が付いているとシタイルシートでいくら色を指定しても効かないので、
なにかしら代わりの手段を探すかしかないかと思います。
(current styleを見るとcssでcolor:blackを指定すればちゃんとblackにはなっている、
それでも灰色になるのはdiabled属性があると「cssとは別次元で」後から効果を付けているからだと思う)
XMLデータ上はdisabledのままでかまわない方法、
既存のシステムにjavascriptを追加するだけの方法を提案したつもりですが、
まだ問題があるでしょうか?
(実際のところそれほど自信がある策ではないので)
他に考えられるのは、diabledのinputはそのままに、Javascriptでreadonlyのinputを生成して上に重ねてしまうとか・・具体的なコードは面倒なのでとりあえずパスですが。
ご丁重にありがとうございます。
既存の設定値を利用してどうにか対応を行いたかったのですが、やはりIEの仕様上からは無理ということなのでしょうか。実はこうすればdisabled指定のままでもOKというのがあるのではないのかと思いこの様に質問を書いているしだいであります。でも、オブジェクトにはきちんとcolor属性指定がされているんですよね。。。
>xml→html変換ソフトの存在がいまひとつわかってませんが
ソフトというより自作のプログラムです。
ここまで丁寧に回答して頂き申し訳ないのですが、どうしてもdisabledで対応を行いたいのです。やはりreadOnlyに逃げないと駄目なのでしょうか。。。