jQuery buttonset和带有隐藏值的CakePHP无线电设置

时间:2012-11-01 03:43:37

标签: jquery-ui cakephp

我正在使用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按钮设置代码在选择其中一个选项时不喜欢这个,因为它希望共享表单中所选无线电选项名称的所有元素都具有与之关联的按钮小部件。此时,associate jQuery UI ticket是wontfix。

我不愿意向CakePHP提交一张票,因为有一个隐藏的字段具有相同的名称来默认非选定的收音机组的值是合法的做法。

jsFiddle显示了一个示例。当选择按钮时,您需要打开javascript控制台以查看生成的错误。

1 个答案:

答案 0 :(得分:0)

一个可能的答案是生成没有标签的虚假无线电选项。

这将阻止它包含在渲染的按钮组中,但它仍然会附加一个按钮对象。您还需要默认收音机进行检查,这样如果没有选择其他按钮,则会提交该默认值。

echo $this->Form->input('contact_address_type', array(
    'type' => 'radio',
    'legend' => false,
    'options' => array('domestic' => 'Domestic', 'po_box' => 'Domestic PO Box', 'foreign' => 'Foreign'),
    'value' => false,
    'before' => $this->Form->radio('contact_address_type', array('' => ''), array('legend' => false, 'checked' => 'checked', 'value' => false, 'label' => false)),
    'div' => array('class' => 'contact address_type')
));

另一种选择是强制对用户进行默认选择,因此您知道将选择一个选项。

echo $this->Form->input('contact_address_type', array(
    'type' => 'radio',
    'legend' => false,
    'options' => array('domestic' => 'Domestic', 'po_box' => 'Domestic PO Box', 'foreign' => 'Foreign'),
    'value' => 'domestic',
    'div' => array('class' => 'contact address_type')
));

但我想看看是否有更好的选择。