ラジオが選択されているかどうかを判断するためのラジオの正しいセレクターは何ですか?


7

#statesを使用してフォーム要素の可視性を変更し、最初の要素が入力されている場合にのみ2番目の要素を表示したいと思います。最初の要素はラジオボタンのペアなので、次のように試みました。

  '#states' => array('visible' => array(
  ':input[name="radio-id"]' => array('value' => '0', 'value' => '1'),
    ),),

ただし、これが機能しない場合は、2番目の値の条件が最初の値よりも優先されるため、2番目のラジオ( '1')がチェックされている場合にのみ、他の要素が表示されます。それで私は試しました:

    :input[name="radio-id"]' => array('checked' => TRUE),

いいえ、それも機能しません。

これに使用する正しい構文は何ですか、そしてどのドキュメントページにありますか?(drupal.orgまたは他のサイト?)探してみましたが見つかりません。

回答:


8

今日も同じ問題がありました。わずかな修正否定値式このコメントに提案した:「空のラジオセレクション」drupal_process_states() APIページには、私のためのトリックをやりました!

'#states' => array(
   'visible' => array(
     ':input[name="radios-name"]' => array('!value' => false),
   ),
 ),

上記の#statesエントリを含む選択リストを非表示にしたいのですが、5つのラジオ(共有名 "radios-name")のリストでまだ選択が行われていません。

ラジオも '#required' => trueでした。私の場合、5つのラジオボタンすべてに数値以外の文字列値が含まれています。私の場合も#default_valueは指定されていません。

免責事項:私はこれをChromeでのみテストしました!


ありがとう、ありがとう。ちなみに、Firefoxでも動作します。
marcvangend 2014年

ありがとう-うまくいきます。リンクしている例では、使用しているvisibleではなくinvisible state を使用していることに注意してください。それを機能させるには、invisibleを使用する必要もあります。
Felix Eve

2

Examplesプロジェクトの Form ExampleにあるStatesの例を見てください。この正確な状況は、いくつかの異なる方法で示されています。


ここにコードスニペットを投稿してみてください。私たちはできるだけ長くここにいるユーザーを望んでいます。
niksmac

2

#statesプロパティのドキュメントは、のドキュメントdrupal_process_states()にあり、次の文とコード例が含まれています。

リモート条件で選択リストとラジオボタンを参照する場合は、「値」条件を使用する必要があります。

  '#states' => array(
    // Show the settings if 'bar' has been selected for 'foo'.
    'visible' => array(
      ':input[name="foo"]' => array('value' => 'bar'),
    ),
  ),

2番目のスニペットで使用しているコードは、次の例のように、チェックボックスで機能します。

$form['toggle_me'] = array(
  '#type' => 'checkbox',
  '#title' => t('Tick this box to type'),
);

$form['settings'] = array(
  '#type' => 'textfield',
  '#states' => array(
    // Only show this field when the 'toggle_me' checkbox is enabled.
    'visible' => array(
      ':input[name="toggle_me"]' => array('checked' => TRUE),
    ),
  ),
);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.