我喜欢在CGridView中使用CCheckBoxColumn。我想在提交表单之前检查至少应选中一个复选框值。如何为此编写规则。
以下是代码。 view.php
'class' => 'CCheckBoxColumn', 'selectableRows' => 2,
'checkBoxHtmlOptions' => array(
'name' => 'custids[]',
'value'=>'CHtml::checkBox("cid[]",null,array("value"=>$data->customer_id,
"id"=>"cid_".$data-customer_id
))',
'type'=>'raw',
),
在Moduls中
public function rules() { // NOTE: you should only define rules for
those attributes that // will receive user inputs. return array( ...
.... array('custids', 'CheckSelected' ), ... }
public function CheckSelected($attribute,$params ) {
if(count($this->custids) == 0)
$this->addError($attribute,'Please select the cust ids'); }
如何在客户端验证此复选框[]。
我尝试了 Validate Or Limit Number Of Checkboxes Selected In Ccheckboxcolumn链接中提到的示例。
答案 0 :(得分:1)
您可以在afterValidate客户端选项
中添加此签入$form = $this->beginWidget(
'CActiveForm',
array('id' => 'add_category_form',
'enableAjaxValidation' => true,
'clientOptions' => array(
'validateOnSubmit' => true,
'ajaxVar' => 'ajax',
'afterValidate' => "js: function(form, data, hasError) {
///check it there
return false;
}
"
)
)
);
答案 1 :(得分:0)
我没有看到您的活动表单的代码,但是如果至少选中了其中一个复选框,则只需在表单提交时就可以在客户端进行检查,
你可以retrieve the checked column in client side (javasctipt):
var idArray = $(gridID).yiiGridView('getChecked', columnID);
// or
$.fn.yiiGridView.getSelection(gridID);
现在你可以停止,如果这是一个空数组。