注:誰もがこの質問を誤解しているようです。文字通り、everyone。サインアップフォームを作成していません。個人データを収集していません。これが一部である形式は、特定の条件で多数の人々のリストをフィルタリングするために使用されます。
ユーザーがSQLクエリを作成するのに役立つクエリ作成者フォームがあります。考えられるすべてのクエリのバリエーションが一覧表示され、ユーザーは必要なバリエーションを選択してクエリを実行する必要があります。
問題
個人の場合、ユーザーはGenderを選択できます。外部からはブール演算(男性または女性)のように見えますが、もう1つのバリエーションがあります。
次のようにラジオボタンをSwitchに置き換えました:
3番目の状態をどのように表すのですか?
私が質問の前提を正しく理解した場合、ユーザーが決定すべきことは次のとおりです。
可能な結果は次のとおりです。
元の提案: [デモ]
トグルボタン を使用していることを考慮して、3番目の結果として、両方のオプションの選択を解除する可能性を与えることができます(この可能性を明確にするために追加の注記を追加するか、 "(オプション)" ラベルの横)。ボタンは1つまたは非選択のいずれかを選択できます。すでに選択されているボタンをクリックすると、選択が解除されます。
2番目の提案:ユーザーに1を決定し、次に2を決定させます。チェックボックスはボタンを有効/無効にします。この場合、トグルボタンは、選択する必要があるラジオボタンとして機能します。
(チェックボックスの文言に関するフィードバックを提供してくれた@theonlygustiに感謝)
検索するのは、「両方」、「いずれか」、または「すべて」です(性別カテゴリを追加する場合)。
すべて-女性-男性
したがって、両方(またはすべて)の性別の結果が含まれることは明らかです。このように、ユーザーは3つのトグルの1つを選択する必要があります。デフォルトでは「すべて」が選択されます。
多くの状況で、コンテキストは本当に重要であり、男性/女性だけでなく、すべてのフィルターを実行するための一貫した方法を検討するのが賢明な場合があります。質問が述べるように:
これが一部である形式は、特定の条件で多数の人々のリストをフィルタリングするために使用されます。
他の「条件」とは何ですか?これらはどのように一致しますか?趣味はありますか?居住国/地域/市区町村?部門?勤続年数は?フィルタリングする複数の/ネストされたオプションの有無にかかわらず?
別の方法として、eコマース環境の「一般的な」フィルターがどのように機能するかを確認することは価値があります。
この状況では、ドロップダウンが最良のUIオブジェクトであると私は主張します。
download bmml source – Balsamiq Mockups で作成されたワイヤーフレーム
おそらくユーザーにとってはより馴染みがあり、何が選択されているかが一目でわかりやすく、「任意」の状態に戻すのは簡単です。さらに、たとえば「トランスジェンダー」を追加したい場合は、拡張可能です。唯一の潜在的な欠点は、他のオプションが対話なしではユーザーに表示されないことです。
(ソースデータが自由形式でないと仮定します。自由形式の場合、編集可能なコンボボックスが最適ですが、最も直観的ではありません。)
クエリで追加または削除できるいくつかのフィルターオプションが必要な場合は、すべてのアクティブなフィルターを最後に別の行のボックスとして表し、個別に削除してフィルターを無効にする(通常は最後に少しX)。これは、ほとんどの電子メールおよびテキストメッセージアプリケーションで複数の受信者が指定される方法に似ています。他のすべてのフィルターオプションが必須の場合、これは意味をなさない場合があることに注意してください(ユーザーのメンタルモデルに「ボックス化フィルター」を追加する価値があるかどうかをクエリビルダーがどのように機能するかを詳しく知る必要があります)。
私は他のいくつかの回答に同意します。「問題ではない」という3番目のオプションが必要なようです。次の表現を考慮することができます。
確かに、これらは大丈夫ではありません:
二次的な懸念として、性別の特定のケースには一連の影響があり、他の人は非常に勇敢に擁護しました(たとえ彼らがあなたの質問のポイントを大幅に逃したとしても)。性別は非常にデリケートなトピックのようです。多分次回は別の例を使用します:)
より良いソリューション:jQueryのトライステートスイッチを使用できます。 https://vanderlee.github.io/tristate/
<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 ]
クエリのすべての可能なバリエーションがリストされ、ユーザーは必要なバリエーションを選択する必要があります
これはあなたの質問に答えると思います。性別フィールドをブール値として扱うのではなく、列挙値として扱う必要があります。この場合、偶然にも2つの異なる値しかサポートされません。
その意味で、他の列挙の場合と同様に、単に選択範囲を表示します。
これは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
唯一の欠点は、より多くのスペースが必要になる可能性があることです。通常、フィルターを行ではなく列に配置することをお勧めします。
省スペースの選択肢:「男性」と「女性」の2つのボタンと、最大1つのボタンを強調表示できます。
フィルターです。フィルターはデータセットからデータを削除します。 「男性」を選択すると、「男性」とマークされたレコードのみが使用されます。 「女性」を選択すると、「女性」とマークされたレコードのみが使用されます。何も選択せず、すべてのレコードが使用されます。何も選択されていないことがデフォルトの状態です。たとえば、ユーザーが「男性」を選択し、何も選択しないように変更した場合、「男性」をもう一度クリックするとオフになります。
一部の人々は、これらのカテゴリに分類されない、または分類されたくない、または性別を伝えたくない人々にこだわりを持っているようです。何も選択しない場合、それらの人々は明らかにリストに含まれます。そして、これは正しいです。ディック、トム、ハリーがトランスジェンダーの全従業員の完全なリストを見つけられるようにしたくないのです(おそらく非常に少数です)。大規模な人口では簡単に見つけられます。
これを検討するもう1つの方法は、2つのトグルボタンがあることです。つまり、ユーザーが選択したものを使用してフィルター処理します。どちらも選択しない場合は、クエリに含めないでください。それらの1つまたは両方を選択すると、where句に追加されます...およびgender = 'male' ...、またはwhere句に追加されます...および(gender = 'male'またはgender = 'female' )。
性別が常に存在する場合、UIで性別が選択されていないか、両方が選択されている場合と同じ結果になります。
性別をnullに設定できる場合は、nullを選択可能なアイテムとして追加できます:[NULL] [MALE] [FEMALE]
私にとっては、フィールドをアクティブにするチェックボックスを使用するか、特定のフィールドが持つオプションを一覧表示するかは、UIのコンテキストに依存します。
はい/いいえ/どちらでもないフィルター入力に対するこのコンパクトなアプローチはどうですか
クリックごとにオフ/アップ/ダウン/オフから切り替わる列ヘッダーのソートボタンからキューを取得する
クリックごとに値を変更する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)
--------------------
「女性」ボタンと「男性」ボタンを反転させて、特定のフィルターが「オン」であることを示すことができます
ブール値には2つの状態しかない。オン/オフまたは1 /ゼロ。一方、それがデータベース内にある場合は、nullにすることも、設定することもできません。したがって、男性、女性、その他の場合は、ゼロ、1、またはnullを使用します。 1つのブールフィールドに3つの状態。
ラジオボタンではなく、はい/いいえの2つのフィールドを用意したほうがよいでしょう。見た目とまったく同じように見えますが、オンとオフの両方を含む4つの状態すべてが許可されます。それのオン/オフネスを強調するために、あなたはそれぞれの性別に切り替える小さなオン/オフスイッチを追加することができます。
チェックボックスを使用するので、基本的には「男性を検索」/「女性を検索」/「両方を検索」しているので、検索の対象にするチェックボックスをオンにします。
2つ目の利点は、システムが他の性別を含むように拡張された場合、新しいチェックボックスを追加するだけです。