2009-11-09 37 views
27

私は、PHPスクリプトを使用して選択ボックスに自動的に入力するWebサイトで作業しています。問題を除いて、これはすべてうまくいきます。私がテキストボックスを埋めるために使っているのは非常に長いタイトルです(ジャーナル記事とプレゼンテーションタイトルです)。ドロップダウンボックスは、画面の端から伸びる最も長い要素の幅まで広がっているため、スクロールバーに到達できません。私は手動でドロップダウンボックスをCSSを使って特定の幅に設定しようとするさまざまな方法を試みましたが、これまでのところ役に立たなかったのです。選択ボックスを特定の幅に設定するのに最適なのですが、ドロップダウンメニュー自体ははるかに広いです。HTMLドロップダウンオプションのドロップダウン要素の幅を設定する

これについてのヒントは非常に高く評価されます。

EDIT:

これは、次のCSSラインは(私はページをテストしていたものです)Google Chromeのを除き、主要なブラウザのすべてで動作していることが判明しました。 Chrome用のソリューションがわかっている場合は、そのことを知っておくとよいでしょう。 (いくつかの制約があるが)あなたはスタイルができ

select, option { width: __; } 

答えて

10

実際optionセレクタを持つアイテムに自分自身を:

select, option { width: __; } 

あなただけのドロップダウンを制約されていないこの方法ではなく、そのすべての要素。サーバー側で

+1

これは私がすでに試みたものですが、もともとはChromeでのみテストしていました。これはInternet Explorer、Firefox、Safari、Operaで動作します。だから私はこの特定のページ(サイトの管理部分の一部である)のプライマリユーザーがGoogle Chromeを使用していないので、これが質問に答えると言うでしょう。 Google Chromeでこれを過ぎ去らせる既知の方法があれば、それは良いことです(また、すべてのブラウザが同じようにCSSを処理するといいかもしれませんが、これは現在ではもっと標準化されていると思いました)。 –

+0

また、すばらしい返信をいただきありがとうございます! –

+0

select要素の設定幅を設定するのは良い考えではありません。http://stackoverflow.com/questions/1700807/how-to-show-extended-option-in-select-list – anddoutoi

1

:select要素:

  1. は、文字列の最大長
  2. Clipストリング
  3. (オプション)

水平省略記号を追加する別の解決策を定義あなたの場合(単なる推測の)単一選択フォームコントロールであり、代わりにラジオボタンのグループを使用することができます。これらは、より良い制御でスタイルを設定できます。 select [@multiple]がある場合は、チェックボックスのグループを複数選択することができます。

+0

答えをありがとう。あなたの最初の解決策は、私が何をする必要があると思っていたが、より簡単な方法があることを望んでいた。 Chromeが無視されている限り、そこにいることが分かります。 –

15

長いドロップダウンボックスを処理する最も良い方法は、固定幅のdivコンテナの内側に配置し、selectタグのwidth:autoを使うことです。ほとんどのブラウザにはdiv内のドロップダウンが含まれますが、クリックすると展開されて完全なオプション値が表示されます。 IEエクスプローラでは機能しませんが、修正プログラムがあります(IEには常に必要です)。あなたのコードは次のようになります。

HTML

<div class="dropdown_container"> 
    <select class="my_dropdown" id="my_dropdown"> 
    <option value="1">LONG OPTION</option> 
    <option value="2">short</option> 
    </select> 
</div> 

CSS

div.dropdown_container { 
    width:10px; 
} 

select.my_dropdown { 
    width:auto; 
} 

/*IE FIX */ 
select#my_dropdown { 
    width:100%; 
} 

select:focus#my_dropdown { 
    width:auto\9; 
} 
+3

私はjsfiddleを作った:http://jsfiddle.net/3BEtk/1/(幅を55pxに増やしたもの) – user984003

+1

Firefox 45.x、Chromium 39.x、IE 11.xで同様の例をテストしたところ、 'width: 100% ' – LosManos

-5

小さく、より良い一つ

var i = 0; 
$("#container > option").each(function(){ 
    if($(this).val().length > i) { 
     i = $(this).val().length; 

     console.log(i); 
     console.log($(this).val()); 
    } 
}); 
+0

CSSでスタイルを行う必要があります。これはドロップダウンの幅を変更しません。 –

0

小さく、ベストワン

#test{ 
width: 202px; 
} 
<select id="test" size="1" name="mrraja"> 
-2
uは、単にドロップダウンボックス

<select class="my_dropdown" id="my_dropdown" style="width:APPROPRIATE WIDTH IN PIXLES"> 
<option value="1">LONG OPTION</option> 
<option value="2">short</option> 
</select> 

例えばの長さを変更するには、「スタイル」の「幅」属性を使用することができます

style="width:200px" 
2

HTML:

<select class="shortenedSelect"> 
    <option value="0" disabled>Please select an item</option> 
    <option value="1">Item text goes in here but it is way too long to fit inside a select option that has a fixed width adding more</option> 
</select> 

CSS:

.shortenedSelect { 
    max-width: 350px; 
} 

Javascriptを:

// Shorten select option text if it stretches beyond max-width of select element 
$.each($('.shortenedSelect option'), function(key, optionElement) { 
    var curText = $(optionElement).text(); 
    $(this).attr('title', curText); 

    // Tip: parseInt('350px', 10) removes the 'px' by forcing parseInt to use a base ten numbering system. 
    var lengthToShortenTo = Math.round(parseInt($(this).parent('select').css('max-width'), 10)/7.3); 

    if (curText.length > lengthToShortenTo) { 
     $(this).text('... ' + curText.substring((curText.length - lengthToShortenTo), curText.length)); 
    } 
}); 

// Show full name in tooltip after choosing an option 
$('.shortenedSelect').change(function() { 
    $(this).attr('title', ($(this).find('option:eq('+$(this).get(0).selectedIndex +')').attr('title'))); 
}); 

作品完璧。私も同じ問題がありました。このJSFiddleを確認してくださいhttp://jsfiddle.net/jNWS6/426/

関連する問題