CakePHP 2.2.3を使用してラジオセットを生成し、それをjQueryボタンセットに適用しています。
CakePHPスニペット:
echo $this->Form->input('contact_address_type', array(
'type' => 'radio',
'legend' => false,
'options' => array('domestic' => 'Domestic', 'po_box' => 'Domestic PO Box', 'foreign' => 'Foreign'),
'div' => array('class' => 'contact address_type')
));
jQuery UIスニペット:
$('.contact.address_type').buttonset();
HTMLが生成されると、無線セットと同じ名前を共有する非表示フィールドがあります。これは、フォームが送信されたときに、ラジオセットが選択されていない場合でも、リクエスト->データに値(空白ではありますが)を取得するために行われます。
ただし、jQuery UIボタンセットコードは、オプションの1つを選択するときにこれを好みません。これは、フォームで選択したラジオオプションの名前を共有するすべての要素に、ボタンウィジェットが関連付けられていることを想定しているためです。この時点で、関連するjQueryUIチケットはwontfixです。
選択されていないラジオセットの値をデフォルトにするために同じ名前の非表示フィールドを持つことは正当な慣行であるため、私はCakePHPにチケットを提出するのが嫌いです。
このjsFiddleは例を示しています。ボタンが選択されたときに生成されるエラーを確認するには、JavaScriptコンソールを開く必要があります。