- PR -

DropDownListの非活性時の文字色

投稿者投稿内容
ポッキー
常連さん
会議室デビュー日: 2004/01/29
投稿数: 43
投稿日時: 2008-01-24 16:15
開発環境
C#.NET2005
ASP.NET

ドロップダウンリストのユーザコントロールを作成しています。
非活性時においても文字色を黒で表示したいためです。

まずタブの遷移でのフォーカスセットを制御しました。
次にマウス操作時の制御として以下のイベントにて親フォームにフォーカスがあたるようにしました。
「onfocus」「onmousemove」「onmouseover」「onmouseout」
(document.parentWindow.focus()

ところがスペックがよくない端末だとプルダウンが1瞬表示されていまします。
「onmousedown」等考えられるイベントを試してみたのですが、どうしても表示されています。
プルダウンが表示されるイベントがあるのでしょうか?

プルダウンが表示されない方法をご存知の方、ご教授願います。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-01-24 17:27
マウスクリックを防ぐのが目的であれば、こんな力業があります。
(transparent.gifは1ピクセル四方の透明な画像)

コード:
<div style="position:relative; width:0px; height:0px;">
    <select style="position:absolute; top:0px; left:0px;" style="width:200px;" >
        <option value="*">ほげほげ
        <option value="**">ふがふが
    </select>
    <img src="transparent.gif" style="position:absolute; top:0px; left:0px;" width=200 height=22>
</div>



ただし、使用はお勧めしません。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-01-24 18:42
引用:

ポッキーさんの書き込み (2008-01-24 16:15) より:

ドロップダウンリストのユーザコントロールを作成しています。
非活性時においても文字色を黒で表示したいためです。


環境やブラウザに依存するものですから、個人的には Web では気にすべきところではないと思います。 ただ表示項目ということで Label か何かにすげ変えてしまうという実装はたまに見かけます。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ポッキー
常連さん
会議室デビュー日: 2004/01/29
投稿数: 43
投稿日時: 2008-01-25 10:49
ご返答ありがとうございます。

> rainさん
画像を貼り付け一時対応しようと思いましたがselectの場合には画像は後ろに行ってしまうんですね。
前景にするのは不可能なのでしょうか?

> じゃんぬねっとさん
個人的にいってしまえばどうでもいいです。
ラベルの提案は却下されてしまいました。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-01-25 11:29
これだといかがでしょう。

コード:
<div style="position:relative; width:0px; height:0px;">
    <select style="z-index:1; position:absolute; top:0px; left:0px;" style="width:200px;" >
        <option value="*">ほげほげ
        <option value="**">ふがふが
    </select>
    <img src="transparent.gif" style="z-index:2; position:absolute; top:0px; left:0px;" width=200 height=22>
</div>



しつこいようですがお勧めはしませんし、何かあっても責任は持てません。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-01-25 11:57
力業第二弾です。
dropdown.gifは、ドロップダウンコントロールの画像です。

コード:
<div>
        <table>
            <tr>
                <td style="width: 200px; height: 22px; background-image: url(./dropdown.gif); background-repeat: no-repeat;"> ほげほげ</td>
            </tr>
        </table>
</div>

ポッキー
常連さん
会議室デビュー日: 2004/01/29
投稿数: 43
投稿日時: 2008-01-25 11:57
駄目でした・・・。
IEではselect要素ではz-indexやborderなど、ほかのフォームコントロール要素で使用可能なプロパティの一部が無視されるところまではわかったのですが、それを解消する苦肉の策が「iframe」のようですがこれまたうまくいきません。

--------コード-------------
<div style="position:relative; width:0px; height:0px;">
<select style="z-index:3; position:absolute; top:65px; left:55px;>
<option>select</option>
</select>
<span style=" position:absolute; top:10px; left:10px; z-index:1;">
<iframe width="110" height="80" scrolling="no" frameborder="3" allowtransparency="true"></iframe>
</span>
<img src="sample.gif" position:absolute; top:65px; left:35px;" width=200 height=22>
</div>

---------------------------

使用はお勧めできないのは何故でしょう?
時々この強行とも思える手段のものを見かけることがあります。
Opera等での動作で何が起きるかわからないからということなのでしょうか?
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-01-25 13:09
引用:

ポッキーさんの書き込み (2008-01-25 11:57) より:
駄目でした・・・。
IEではselect要素ではz-indexやborderなど、ほかのフォームコントロール要素で使用可能なプロパティの一部が無視されるところまではわかったのですが、それを解消する苦肉の策が「iframe」のようですがこれまたうまくいきません。


すみません。IE6にそのような仕様があることを初めて知りました。
http://cssbug.at.infoseek.co.jp/detail/winie/b112.html
ちなみにIE7では大丈夫でした。

引用:

使用はお勧めできないのは何故でしょう?
時々この強行とも思える手段のものを見かけることがあります。
Opera等での動作で何が起きるかわからないからということなのでしょうか?


ほかにも、
・ブラウザのバージョンが違う
・ブラウザの設定(フォントや表示サイズ)が違う
・OSが違う
・OSの設定(ウインドウスタイルなど)が違う
このような場合に、うまくいくかどうかはわかりません。
例え今は大丈夫でも、将来どうなるかわかりませんし。

また、開発者自身がこういった(普通でない)方法を受け入れないこともあります。
# 私もできることならやりたくありませんが、他にどうしようもなければやります。

あれこれ考えると、ポッキーさんが最初に示した状態でお客さんに納得してもらうのが
一番丸く収まるのではないか、という気がします。

スキルアップ/キャリアアップ(JOB@IT)