選択されたものが非表示のコンテナ内の複数選択で初期化されると、コンテナを表示すると、プレースホルダーテキストはわずか90ピクセル後に切り取られます。
Chosen呼び出しのwidth
オプションは、コントロール全体のサイズを正しく設定しますが、プレースホルダーテキスト/入力のサイズは変更しません。 クリックしてオプションのドロップダウンを表示すると、プレースホルダーが正しいサイズに展開されます。
最小限のjsfiddleを参照してください([選択を表示]ボタンをクリックするだけです)
Chrome Linux、Chrome / Firefox / IEWinで観察されました。
問題はここにあるようです:
https://github.com/harvesthq/chosen/blob/master/coffee/chosen.jquery.coffee#L506
非表示のフィールドの場合、 .outerWidth()
は偽の値を返します(この場合、 100
は、 width
によって設定された100%
幅スタイルから来ているようです。 width
オプション)。 その偽の値を見て、次の行は、入力を小さくして合わせる必要があると判断します(これが、偽の幅が100で、Chosenが10を引くため、この例では幅が90pxになる理由です)。
ただし、ここで何が適切な修正になるかはわかりません。 すぐに考えられる最善のオプションは、検索入力の幅を100%
に設定することです。これがコンテナ内の唯一のものである場合、またはdefault
クラスが設定されている場合です。
私はここで同じ問題に直面しています。 この問題は、Mac OS X10.10.3にインストールされている3つのブラウザすべてに存在します。
Chrome 43.0.2357.65
Safari 8.0.6
FirefoxDeveloperEdition 40.0a2
ありがとう!
#2029で同じ問題
この問題でCSSオーバーライドを使用して、これが修正されるまでこれを回避しました。
たぶん、search_field_scale関数を次のように変更します。
Chosen.prototype.search_field_scale = function () {
var div, f_width, h, style, style_block, styles, w, _i, _len;
if (this.is_multiple) {
h = 0;
w = 0;
style_block = "position:absolute; left: -1000px; top: -1000px; display:none;";
styles = ['font-size', 'font-style', 'font-weight', 'font-family', 'line-height', 'text-transform', 'letter-spacing'];
for (_i = 0, _len = styles.length; _i < _len; _i++) {
style = styles[_i];
style_block += style + ":" + this.search_field.css(style) + ";";
}
div = $('<div />', {
'style': style_block
});
console.log(this.choices_count());
div.text(this.search_field.val() ? this.search_field.val() : this.choices_count() < 1 ? this.default_text : '');
console.log(div.text());
$('body').append(div);
w = div.width() + 25;
div.remove();
//f_width = this.container.outerWidth();
//if (w < f_width - 10) {
// w = f_width - 10;
//}
return this.search_field.css({
'width': w + 'px'
});
}
};
$( '。chosen-select')。trigger( "chosen:updated");を実行しました。 回避策として表示された場合
+1
+1
最も参考になるコメント
$( '。chosen-select')。trigger( "chosen:updated");を実行しました。 回避策として表示された場合