Chosen: 最初に非表示にした複数選択のプレースホルダーは90pxで切り取られます

作成日 2015年03月31日  ·  7コメント  ·  ソース: harvesthq/chosen

選択されたものが非表示のコンテナ内の複数選択で初期化されると、コンテナを表示すると、プレースホルダーテキストはわずか90ピクセル後に切り取られます。

chosen-multi-cropped

Chosen呼び出しのwidthオプションは、コントロール全体のサイズを正しく設定しますが、プレースホルダーテキスト/入力のサイズは変更しません。 クリックしてオプションのドロップダウンを表示すると、プレースホルダーが正しいサイズに展開されます。

chosen-multi-ok

最小限のjsfiddleを参照してください([選択を表示]ボタンをクリックするだけです)

Chrome Linux、Chrome / Firefox / IEWinで観察されました。

Sizing

最も参考になるコメント

$( '。chosen-select')。trigger( "chosen:updated");を実行しました。 回避策として表示された場合

全てのコメント7件

問題はここにあるようです:

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

このページは役に立ちましたか?
0 / 5 - 0 評価