0

それは超退屈で超迷惑な IE 選択ボックスの問題です。

無事に解決できました…

Jクエリ:

$(function(){
    if($.browser.msie){
        $("select:not(#wrkTimeFrm,#wrkTimeFrm1,#wrkTimeTo,#wrkTimeTo1)")
            .focus(function(){
            $(this).css("width","auto");
            $(this).css("position","absolute");
        });
        $("select:not(#wrkTimeFrm,#wrkTimeFrm1,#wrkTimeTo,#wrkTimeTo1)")
            .blur(function(){
            $(this).css("width","145px");
            $(this).css("position","inherit");
        });
    }
})

…が、それも今までだけ。

ご覧のとおり、:not(id) は、サイズが 145px 未満である、または 145px 未満である必要がある (つまり、変更されるべきではない) 選択ボックスです。正常に動作していました。しかし、そのような選択ボックスのリストは、その方法で処理するには多すぎます。さらに、ID は動的であり、幅が 145px より大きいか小さいかはわかりません (オプションは動的です...明らかに)。

そのため、自動幅が現在の幅よりも大きい場合にのみ、選択ボックスの幅を更新しようとしています。何かのようなもの:

$(function(){
    if($.browser.msie){
        $("select").focus(function(){
            if(autoWidth>currentWidth){
            do_the_rest();
            }
        });
    }
});

そして、私は 'autoWidth' と 'currentWidth'($(".dd").outerWidth() は幅を 145 にしますが、それを currentWidth に使用できるかどうか心配です。同じ css クラス 'dd' を持つ同じ jsp の複数の選択ボックス, イベントは 'this' 選択ボックスに対してのみ発生します. 誰かがフォーカスされている選択ボックスのクラス名を取得する方法を教えてくれるかもしれません. !...そして、outerWidth. より)。

だから助けてください!

4

2 に答える 2

1

特にフィドルや生成されたHTMLコードさえも含めていないため、あなたの意味を理解するのは本当に難しいと思います...しかし、おそらくあなたがやりたいことはこれだと思います:

$(function(){
    if($.browser.msie){
        $("select").focus(function(){
            if($(this).width()>145){
              $(this).css("width","auto");
            }
        });
    }
});

アップデート:

$(function() {
    $("select").focus(function() {
        if ($(this).width() > 95) {
            var prevWidth = $(this).width();
            $(this).css("width", "auto");
            if ($(this).width() < 100) {
                $(this).css("width", 100 + "px");
            }
            $(this).blur(function() {
                $(this).css("width", prevWidth + "px");
            });
        }

    });

});​
于 2012-10-10T14:07:34.973 に答える
0

CSS幅に % を使用すると、この問題が処理されると思います

width:80%;
于 2012-10-10T13:51:36.773 に答える