web-dev-qa-db-ja.com

3番目の状態のブールスイッチ

注:誰もがこの質問を誤解しているようです。文字通り、everyone。サインアップフォームを作成していません。個人データを収集していません。これが一部である形式は、特定の条件で多数の人々のリストをフィルタリングするために使用されます。

ユーザーがSQLクエリを作成するのに役立つクエリ作成者フォームがあります。考えられるすべてのクエリのバリエーションが一覧表示され、ユーザーは必要なバリエーションを選択してクエリを実行する必要があります。

問題

個人の場合、ユーザーはGenderを選択できます。外部からはブール演算(男性または女性)のように見えますが、もう1つのバリエーションがあります。

  1. 個人は[〜#〜]男性[〜#〜]
  2. 個人は[〜#〜]女性[〜#〜]
  3. 個人の性別は考慮しないでください([〜#〜]男性[〜#〜]または[〜とすることができます[〜 #〜]女性[〜#〜]

次のようにラジオボタンSwitchに置き換えました:

Screenshot of widget

3番目の状態をどのように表すのですか?

62

私が質問の前提を正しく理解した場合、ユーザーが決定すべきことは次のとおりです。

  1. ユーザーが次のオプションのいずれかを検討(フィルター)する場合
  2. 1の答えが「はい」の場合、オプションの1つを選択します

可能な結果は次のとおりです。

  • オプションA
  • オプションB
  • 適用できません

元の提案[デモ]

トグルボタン を使用していることを考慮して、3番目の結果として、両方のオプションの選択を解除する可能性を与えることができます(この可能性を明確にするために追加の注記を追加するか、 "(オプション)" ラベルの横)。ボタンは1つまたは非選択のいずれかを選択できます。すでに選択されているボタンをクリックすると、選択が解除されます。

2番目の提案:ユーザーに1を決定し、次に2を決定させます。チェックボックスはボタンを有効/無効にします。この場合、トグルボタンは、選択する必要があるラジオボタンとして機能します。

(チェックボックスの文言に関するフィードバックを提供してくれた@theonlygustiに感謝)

81
Alvaro

ここに:

検索フィルターを作成していますか?このフィルターオプションを気にしないことを意味するオプションを追加するだけです。

男性|女性|関係ない

他の名前:

  • どれか
  • どちらか
  • 全員
  • 該当なし(該当なし)

「どれでも」が一番好きです。


OPは、(この回答のコメントで)このソリューションがユーザーに余計なクリックを強いることになるという懸念を表明しました。ただし、IMSoPは次のよ​​うに述べています。

デフォルトが「すべて」の場合、そのオプションはデフォルトで選択されているはずです。

デフォルトで選択されたオプションがあるだけです。

115
theonlygusti

検索するのは、「両方」、「いずれか」、または「すべて」です(性別カテゴリを追加する場合)。

すべて-女性-男性

したがって、両方(またはすべて)の性別の結果が含まれることは明らかです。このように、ユーザーは3つのトグルの1つを選択する必要があります。デフォルトでは「すべて」が選択されます。

28
Luciano

多くの状況で、コンテキストは本当に重要であり、男性/女性だけでなく、すべてのフィルターを実行するための一貫した方法を検討するのが賢明な場合があります。質問が述べるように:

これが一部である形式は、特定の条件で多数の人々のリストをフィルタリングするために使用されます。

他の「条件」とは何ですか?これらはどのように一致しますか?趣味はありますか?居住国/地域/市区町村?部門?勤続年数は?フィルタリングする複数の/ネストされたオプションの有無にかかわらず?

別の方法として、eコマース環境の「一般的な」フィルターがどのように機能するかを確認することは価値があります。

enter image description here

  • 何も選択されていない場合、この条件にフィルターは適用されません
  • 1つ(または複数)が選択されている場合、その条件を持つレコードのみが表示されます
  • すべてのオプションが選択されている場合、それらのオプションを持つすべてのアイテムが表示されます(注:アイテムにオプションがない場合、アイテムは表示されません。男性/女性の例では、ユーザーが男性と女性の両方のオプションを選択した場合、性別が入力されている人のみが表示されます)
12
wintvelt

Third StateThird Radioボタンを追加してみませんか?

enter image description here

12
DPS

「選択肢なし」に加えて、他の排他的な選択肢を含む選択には、古き良き時代の選択ボックスが最適です。この特定のケースでは、「フィルターしない」のデフォルトに加えて、次のような必要な数のオプションを追加できます(閉じた状態と開いたときのオプションを表示)。

Select showing non-binary options

また、アルファベット順に適切にソートされているという良い副作用もあるので、どのオプションを最初にするかという政治的な考慮事項を回避できます。

9
Beejamin

他の人が提案したように、男性または女性、およびその他の指定されていない(または収集されたデータに応じて任意の数のオプション)を提供します。

しかし、あなたの質問は本当にフィールド全体を削除する方法に関するものであり、チェックボックスクエリ/結果の一部であることを示します(下の画像の例)ORする必要がありますフィールドの追加/削除/並べ替えリストから。

2番目のオプションは、選択するフィールドが多い場合に最適に機能します。最初のオプションはユーザーにとってより簡単です。

チェックボックスの例:

Gender Selection

8
Graeme Wicksted

この状況では、ドロップダウンが最良のUIオブジェクトであると私は主張します。

mockup

download bmml sourceBalsamiq Mockups で作成されたワイヤーフレーム

おそらくユーザーにとってはより馴染みがあり、何が選択されているかが一目でわかりやすく、「任意」の状態に戻すのは簡単です。さらに、たとえば「トランスジェンダー」を追加したい場合は、拡張可能です。唯一の潜在的な欠点は、他のオプションが対話なしではユーザーに表示されないことです。

(ソースデータが自由形式でないと仮定します。自由形式の場合、編集可能なコンボボックスが最適ですが、最も直観的ではありません。)

7
wmassingham

これまでのコメントのすべての追加情報に基づいて、リセットボタンを追加することをお勧めします。これにより、必要な「未設定」状態が提供され、ユーザーが設定を解除する方法を推測する必要がなくなります。

enter image description here

7
jazZRo

クエリで追加または削除できるいくつかのフィルターオプションが必要な場合は、すべてのアクティブなフィルターを最後に別の行のボックスとして表し、個別に削除してフィルターを無効にする(通常は最後に少しX)。これは、ほとんどの電子メールおよびテキストメッセージアプリケーションで複数の受信者が指定される方法に似ています。他のすべてのフィルターオプションが必須の場合、これは意味をなさない場合があることに注意してください(ユーザーのメンタルモデルに「ボックス化フィルター」を追加する価値があるかどうかをクエリビルダーがどのように機能するかを詳しく知る必要があります)。

4

私は他のいくつかの回答に同意します。「問題ではない」という3番目のオプションが必要なようです。次の表現を考慮することができます。

  • 関係ない
  • どれか
  • 重要ではありません

確かに、これらは大丈夫ではありません:

  • その他(MでもFでもないアイテムを選ぶことではありません)
  • 両方(これらの「重要ではない」ケースがどこにでも現れるように意図する場合は良くありません:「A、B、C、D、両方」と言うことはできません)
  • 上記のいずれでもない(「その他」と同じ)
  • それらのすべて(良いかもしれませんが、「すべて」または「それらのいずれか」を使用したいです)

二次的な懸念として、性別の特定のケースには一連の影響があり、他の人は非常に勇敢に擁護しました(たとえ彼らがあなたの質問のポイントを大幅に逃したとしても)。性別は非常にデリケートなトピックのようです。多分次回は別の例を使用します:)

4
Simone

より良いソリューション:jQueryのトライステートスイッチを使用できます。 https://vanderlee.github.io/tristate/enter image description here

<input type="checkbox" class="tristate" value="1">
<input type="checkbox" class="tristate" value="1" checked="checked">
<input type="checkbox" class="tristate" value="1" indeterminate="1">

ブールスイッチは、2つの状態のみを持つように設計されています。

「3番目」の状態が必要な場合は、別の状態を使用する必要があります。ラジオボタン、スライド、ドロップダウンリスト。フィルタリングしている場合は、(3つの状態ではなく)カテゴリごとにスイッチを使用します。なぜなら、4つの可能な検索の組み合わせがあるからです。

Male   filter [ ON | OFF  ]
Female filter [ ON | OFF  ]
3

クエリのすべての可能なバリエーションがリストされ、ユーザーは必要なバリエーションを選択する必要があります

これはあなたの質問に答えると思います。性別フィールドをブール値として扱うのではなく、列挙値として扱う必要があります。この場合、偶然にも2つの異なる値しかサポートされません。

その意味で、他の列挙の場合と同様に、単に選択範囲を表示します。

  • 単一の選択、または(すべて、A、B、C)オプションのあるドロップダウン。
  • または、複数の選択、または各オプションとその横にある通常の(すべてを選択/何も選択しない)アクションを持つ一連のチェックボックス。
1
njzk2

これは2つの選択肢がある状況ですが、Nの選択肢がある状況の特定のケースと考えることができます。次に、Nの選択肢を持つフィルターを作成し、N = 2を適用する方法を尋ねます。

このアプローチの利点は、他の性別を含めたい、または含める必要がある場合に、フィルター許容値を変更する必要がないことです。また、Nの選択肢を持つ他のフィルターとの整合性が向上します。

チェックボックスのリストだけはどうですか?

Filter by gender:

[x] Male
[x] Female

両方をオンにすることも、1つをオンにすることもできます。すべてのアイテムがフィルターで除外される状況になるため、アプリケーションはncheck最後のオプションができないことを確認する必要があります。

後で拡張する必要がある場合:

Filter by gender:

[ ] Male
[x] Female
[x] Other
[x] Not specified

唯一の欠点は、より多くのスペースが必要になる可能性があることです。通常、フィルターを行ではなく列に配置することをお勧めします。

1
Joost Lubach

省スペースの選択肢:「男性」と「女性」の2つのボタンと、最大1つのボタンを強調表示できます。

フィルターです。フィルターはデータセットからデータを削除します。 「男性」を選択すると、「男性」とマークされたレコードのみが使用されます。 「女性」を選択すると、「女性」とマークされたレコードのみが使用されます。何も選択せず、すべてのレコードが使用されます。何も選択されていないことがデフォルトの状態です。たとえば、ユーザーが「男性」を選択し、何も選択しないように変更した場合、「男性」をもう一度クリックするとオフになります。

一部の人々は、これらのカテゴリに分類されない、または分類されたくない、または性別を伝えたくない人々にこだわりを持っているようです。何も選択しない場合、それらの人々は明らかにリストに含まれます。そして、これは正しいです。ディック、トム、ハリーがトランスジェンダーの全従業員の完全なリストを見つけられるようにしたくないのです(おそらく非常に少数です)。大規模な人口では簡単に見つけられます。

1
gnasher729

これを検討するもう1つの方法は、2つのトグルボタンがあることです。つまり、ユーザーが選択したものを使用してフィルター処理します。どちらも選択しない場合は、クエリに含めないでください。それらの1つまたは両方を選択すると、where句に追加されます...およびgender = 'male' ...、またはwhere句に追加されます...および(gender = 'male'またはgender = 'female' )。

性別が常に存在する場合、UIで性別が選択されていないか、両方が選択されている場合と同じ結果になります。

性別をnullに設定できる場合は、nullを選択可能なアイテムとして追加できます:[NULL] [MALE] [FEMALE]

私にとっては、フィールドをアクティブにするチェックボックスを使用するか、特定のフィールドが持つオプションを一覧表示するかは、UIのコンテキストに依存します。

0
Robert Baron

はい/いいえ/どちらでもないフィルター入力に対するこのコンパクトなアプローチはどうですか

クリックごとにオフ/アップ/ダウン/オフから切り替わる列ヘッダーのソートボタンからキューを取得する

クリックごとに値を変更する1つのボタン。現在のフィルター選択を表示します。

--------------------
| filter by gender |    (gender filter is off)
--------------------

(クリック)

--------------------
|      female      |    (female filter is on)
--------------------

(クリック)

--------------------
|       male       |    (male filter is on)
--------------------

(クリック)

--------------------
| filter by gender |    (gender filter is off)
--------------------

「女性」ボタンと「男性」ボタンを反転させて、特定のフィルターが「オン」であることを示すことができます

0
stuart

ブール値には2つの状態しかない。オン/オフまたは1 /ゼロ。一方、それがデータベース内にある場合は、nullにすることも、設定することもできません。したがって、男性、女性、その他の場合は、ゼロ、1、またはnullを使用します。 1つのブールフィールドに3つの状態。

0
Simon

ラジオボタンではなく、はい/いいえの2つのフィールドを用意したほうがよいでしょう。見た目とまったく同じように見えますが、オンとオフの両方を含む4つの状態すべてが許可されます。それのオン/オフネスを強調するために、あなたはそれぞれの性別に切り替える小さなオン/オフスイッチを追加することができます。

0
samerivertwice

チェックボックスを使用するので、基本的には「男性を検索」/「女性を検索」/「両方を検索」しているので、検索の対象にするチェックボックスをオンにします。

2つ目の利点は、システムが他の性別を含むように拡張された場合、新しいチェックボックスを追加するだけです。

0
deworde