<複数選択>-1つの項目のみを選択できるようにする方法は?


134

<SELECT multiple>複数のオプションを持つフィールドがあり、同時に1つのオプションのみを選択できるようにしたいのですが、ユーザーはCTRLキーを押しながら一度に複数のアイテムを選択できます。

それを行う方法はありますか?(「複数」を削除したくありません)。


5
何?どうして?これはもっと説明する必要があります。
Dai

5
選択で複数を使用しないことによって?:)
GordonM 2011年

5
@GordonMそうだね:PIは、実際には複数を選択することなく、複数の項目を表示するmultiple属性に含まれている)ため、同じものを探していた。これを行う属性が呼び出されたことを忘れたsizeので、トップの回答がうまく機能しました:)
Luc

私は個人的に複数のフィールドを選択していますが、4つのオプションがあり、3つのオプションを選択できるようにしたいのですが、4番目のオプションは他の3つと競合するため、選択した場合は単独にする必要があります(3つのオプションと "none ")
RWolfe 2015年

回答:


281

単に複数選択にするのではなく、次のようにサイズを設定します。

  <select name="user" id="userID" size="3">
    <option>John</option>
    <option>Paul</option>
    <option>Ringo</option>
    <option>George</option>
  </select>

作業例:https : //jsfiddle.net/q2vo8nge/


サイズ属性の<option>の総数をプログラムでカウントすることは可能ですか?
MyName 2017

@Natasha jqueryを使用すると、サイズフィールドの値を取得できます:-)
Vladimir verleg '28

サイズ関連情報:配置selectの内側display: flexの容器、および行うflex-grow: 1上でselectそれを扱うことになりますsize="3"最小の高さとして、その後、あなたのコンテナ内で可能な最大サイズまで全選択の高さをスナップ。jsfiddle.net/z1gypahs
トルクス

25

ユーザーが一度に1つのオプションのみを選択する必要がある場合は、「複数」を削除するだけです。通常の選択を行います。

  <select name="mySelect" size="3">
     <option>Foo</option>
     <option>Bar</option>
     <option>Foo Bar</option>
     <option>Bar Foo</option>
  </select>

フィドル


9

multiple属性を削除したくないのですか?この属性の目的は、指定されたselect要素から複数の値を選択できることをブラウザに指定することです。単一の値のみを選択する必要がある場合は、属性を削除すると、ブラウザは単一の選択のみを許可することを認識します。

お手持ちのツールを使用してください。それが目的です。


1
ああ。size属性はスタンドアロンでも機能します。気づかなかった。感謝
simPod 2011年

6
@simPodの理由は、クライアントがそれらの前にあるすべてのオプションを表示する必要があるが、そのうちの1つしか選択できない場合があるためです。「本物の」htmlを書いてから長い間、私は答えをグーグル/ bingしなければなりませんでした...何日かStackOverflowの天国に感謝します。
リチャードB

1

デフォルトでは1つのオプションのみが必要ですが、ユーザーはCTRLキーを押して複数のオプションを選択できます。これは(すでに)SELECT multipleがどのように動作するかを正確に示しています。

これを参照してください:http : //www.w3schools.com/tags/tryit.asp?filename=tryhtml_select_multiple

質問を明確にしていただけませんか?


Awww私はマルコス・プラコナのおかげで、この質問を理解しました。最初の質問は言葉遣いが不十分でした。
Cogicero 2011年

個人的には、複数の選択オプションを表示するとユーザーのエクスペリエンスに「不公平」だと思いますが、ユーザーは1つしか選択できません。
Cogicero 2011年

1
状況によって異なります
simPod 2012年

1

私はグーグルを検索した後にここに来て、私の終わりに何かを変えます。

したがって、このサンプルを変更するだけで、実行時にjqueryで動作します。

$('select[name*="homepage_select"]').removeAttr('multiple')

http://jsfiddle.net/ajayendra2707/ejkxgy1p/5/


4
あなたは基本的に、受け入れられた答えがしていることをしていますが、複雑な方法でやっています。実行時に複数の属性を削除する代わりに、HTMLで直接削除することができます。jsfiddle.net/3rkk6m9a
ハリー

1
<select name="flowers" size="5" style="height:200px">
 <option value="1">Rose</option>
 <option value="2">Tulip</option>
</select>

このシンプルなソリューションでは、オプションのリストを視覚的に取得できますが、選択できるのは1つだけです。


4
SOへようこそ。詳細な説明を追加してください
Andriy Ivaneyko 2016年

1

私はselect \ multi-selectといくつかの取引をしましたこれは私にとってトリックでした

<select name="mySelect" multiple="multiple">
    <option>Foo</option>
    <option>Bar</option>
    <option>Foo Bar</option>
    <option>Bar Foo</option>
</select>

0

答えは遅いですが、他の人を助ける可能性があります。「複数」属性を削除せずにそれを行う方法を次に示します。

$('.myDropdown').chosen({
    //Here you can change the value of the maximum allowed options
    max_selected_options: 1
});

注:これには、jQuery Chosenプラグインが必要です。harvesthq.github.io
smolo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.