Required checkbox validation

Hi,

I have a contact form, and im using client validation




$form=$this->beginWidget('CActiveForm', array(

		'id'=>'contact-form',

		'enableClientValidation'=>true,

		'enableAjaxValidation' => false,

		'clientOptions'=>array(

			'validateOnSubmit'=>true,

		),

		'focus' => array($model, 'nombre'),

	)); 



and in my required checkbox




		echo $form->checkBox($model, 'condiciones');

		echo $form->labelEx($model, 'condiciones', array(), array('uncheckValue' => ''));

		echo $form->error($model, 'condiciones');



in my form model rules:




array('condiciones', 'required', 'requiredValue' => 1, 'message' => 'Tienes que leer y aceptar nuestra política de datos'),



If i put enableClientValidation to false it’s working ok, but with client validation, if a check and then uncheck, the validation pases.

any help would be appreciated.

hi,

rule:

array(‘condiciones’, ‘boolean’, ‘falseValue’ => ‘true’),

then set

‘enableAjaxValidation’ => true,

work well for me. =)

FalseValue? i guess you mean requiredValue. Anyway, it doesn’t work.

a) it only validates de checkbox the first time (all the others fields are working / validating ok)

B) i don’t want ajax validation. I only want client validation.

Thanks

For example, this code




echo $form->labelEx($model, 'condiciones',array('uncheckValue' => '0'));

                echo $form->error($model, 'condiciones', array('clientValidation' => '

                        console.log(value);

                '));



So, when i click in the check i will see the value in the console. Allways (checked and unchecked) displays 1. So the client validation, is always passing

I wasn’t able to make the client side validation work using the method you explained so I ended up setting AJAX validation to false and setting up the rule for the checkbox like this:




array('conditions', 'compare', 'compareValue' => 1, 'message'=>'You have to check this checkbox'),



And then I used this little piece of JQuery:




$("input[type='checkbox']").each(function(){

	if(!$(this).is(':checked')) $(this).val("0");

	$(this).click(function(){

		if($(this).is(':checked')) {

			$(this).val("1");

		}

		else {

			$(this).val("0");

		}

	});								  

});