В Yii у меня есть модальное всплывающее окно, использующее CJuiDialog, который является оберткой для диалога jquery. В этом диалоговом окне у меня есть CJuiDatPicker, который является оболочкой для инструмента выбора даты jquery.
Если я закрою диалоговое окно и затем открою новое диалоговое окно, средство выбора даты откроется и останется видимым. Если я закрою 2-е диалоговое окно, средство выбора даты останется открытым. Если я открою третье диалоговое окно, откроется второе средство выбора даты, которое останется открытым даже после закрытия диалогового окна.
Как я могу принудительно закрыть средство выбора даты? Или, возможно, более правильно, когда диалоговое окно открывается во второй или более раз, как я могу предотвратить его открытие предыдущего средства выбора даты?
Редактировать: код для просмотра указан ниже:
<?php echo CHtml::link('Add Purchase','#',
array('onClick'=>'addTrans._addTrans_url="' . Yii::app()->createUrl('ortransaction/create',array('investment_id'=>$model->id,'type'=>OrTransaction::TYPE_BUY)) . '";{addTrans()};$("#dialogAddTrans").dialog("open");return false;'));?>
<?php $this->beginWidget('zii.widgets.jui.CJuiDialog', array(
'id'=>'dialogAddTrans',
'options'=>array(
'title'=>'Add Purchase',
'autoOpen'=>false,
'modal'=>true,
),
));?>
<div class="divForAddTrans"></div>
<?php $this->endWidget();?>
<script type="text/javascript">
//this is the magic that loads the form correctly
function addTrans()
{
//public proprety
var _addTrans_url;
<?php echo CHtml::ajax(array(
'url'=>'js:addTrans._addTrans_url',
'data'=>"js:$(this).serialize()",
'type'=>'post',
'dataType'=>'json',
'success'=>"function(data)
{
if(data.status =='failure')
{
$('#dialogAddTrans div.divForAddTrans').html(data.div);
//here is the trick: on submit->once again, call this function
$('#dialogAddTrans div.divForAddTrans form').submit(function(){addTrans(); return false;});
}else{
$('#dialogAddTrans div.divForAddTrans').html(data.div);
setTimeout(\"$('#dialogAddTrans').dialog('close')\",3000);
}
} ",
))?>;
return false;
}