Вывожу форму в модальное окно через renderPartial. Само модальное окно с ajax запросом обернул в виджет.
Но при редактировании выводимой формы (при клике на элементах формы) через ajax срабатывает action, который обрабатывает клик по другой кнопке на этой же страницы.
Пробовал отключать клиентскую валидацию, но все безуспешно. Совершенно непонятно каким образом происходит срабатывание другого экшина.
Вот код
Виджет
<?php
class EditPostWidget extends CWidget {
public $model = array();
public $id;
public function init()
{
}
public function run()
{
$this->beginWidget('bootstrap.widgets.TbModal', array('id'=>$this->id,
//'htmlOptions'=>array()
));
echo '<div class="modal-header">';
echo '<a class="close" data-dismiss="modal">×</a>';
echo '<h4>Редактирование объявления</h4>';
echo '</div>';
echo '<div class="modal-body">';
echo '</div>';
echo '<div class="modal-footer">';
$this->widget('bootstrap.widgets.TbButton', array(
'id'=>'save_edit_post',
'label'=>'Сохранить',
'url'=>'#',
//'buttonType'=>'submit',
'type'=>'success',
'htmlOptions'=>array(),
));
$this->widget('bootstrap.widgets.TbButton', array(
'label'=>'Закрыть',
'url'=>'#',
'htmlOptions'=>array('data-dismiss'=>'modal'),
));
echo '</div>';
$this->endWidget();
echo '<script>
//var post_id'.$this->model->post_id.';
$("#buttonread").click(function(){
var w = $(".modal-body");
w.load("'.Yii::app()->createUrl('Posts/EditPost').'",{post_id:"'.$this->model->post_id.'"})
//$.ajax({url:"'.Yii::app()->createUrl('Posts/EditPost').'", type: "POST", data: "post_id='.$this->model->post_id.'"})
});
</script>';
}
}
?>
Форма
<?php /** @var BootActiveForm $form */
?>
<div id="modal">
<?php
$form = $this->beginWidget('bootstrap.widgets.TbActiveForm', array(
'type'=>'horizontal',
'htmlOptions'=>array('style'=>'overflow:hidden;'),
'enableClientValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit'=>true,),
)); ?>
<div class="row">
<div class="span4">
<?php echo $form->labelEx($model,'title'); ?>
<?php echo $form->textField($model,'title'); ?>
<?php echo $form->error($model,'title'); ?>
</div>
</div>
<div class="row">
<div class="span4">
<?php echo $form->labelEx($model,'text'); ?>
<?php echo $form->textArea($model,'text', array(
'rows'=>5,
'cols'=>45,
'style'=>'width: 526px;',
)); ?>
<?php echo $form->error($model,'text'); ?>
</div>
</div>
<div class="row">
<div class="span4">
<?php echo $form->labelEx($model,'country_id'); ?>
<?php echo $form->textField($model,'country_id'); ?>
<?php echo $form->error($model,'country_id'); ?>
</div>
<div class="span4">
<?php echo $form->labelEx($model,'category_id'); ?>
<?php echo $form->textField($model,'category_id'); ?>
<?php echo $form->error($model,'category_id'); ?>
</div>
</div>
<div class="row">
<div class="span4">
<?php echo $form->labelEx($model,'state_id'); ?>
<?php echo $form->textField($model,'state_id'); ?>
<?php echo $form->error($model,'state_id'); ?>
</div>
<div class="span4">
<?php echo $form->labelEx($model,'phone'); ?>
<?php echo $form->textField($model,'phone'); ?>
<?php echo $form->error($model,'phone'); ?>
</div>
</div>
<div class="row">
<div class="span4">
<?php echo $form->labelEx($model,'town_id'); ?>
<?php echo $form->textField($model,'town_id'); ?>
<?php echo $form->error($model,'town_id'); ?>
</div>
<div class="span4">
<?php echo $form->labelEx($model,'find_loss', array('style'=>'margin-bottom:10px;')); /*echo CHtml::tag('br');*/ ?>
<?php echo $form->radioButtonList($model,'find_loss', array('1'=>'Пропажа', '2'=>'Находка'), array('style'=>'outline: none;', 'labelOptions'=>array('style'=>'display:inline'), )); ?>
<?php echo $form->error($model,'find_loss'); ?>
</div>
</div>
</div>
<?php $this->endWidget(); ?>
Далее, при показе формы в модальном окне, при выборе элемента формы (текстового поля например) через ajax срабатывает тот самый (не нужный в данном контексте) action. Подскажите, как сделать, чтобы не было таких конфликтов?