在Yii中,我有一个使用CJuiDialog的模态弹出窗口,它是jquery对话框的包装器。在这个对话框中,我有一个CJuiDatPicker,它是jquery的datepicker的包装器。
如果我关闭对话框然后打开一个新对话框,则会打开一个日期选择器并保持可见状态。如果我关闭第二个对话框,则datepicker保持打开状态。如果我打开第3个对话框,第二个日期选择器会打开,即使在关闭对话框后也会保持打开状态。
如何强制关闭日期选择器?或者,当对话框打开第二次或更长时间时,可能更正确,如何阻止它打开以前的日期选择器?
编辑:下面列出的视图代码:
<?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;
}
答案 0 :(得分:1)
您可以在加载/打开对话框之前销毁对话框内容并重新加载内容