在Yii中,我使用CJuiDialog创建了一个模态弹出窗口,它是jquery对话框的包装器。在这个对话框中,我使用了CJuiDatPicker,它是jquery日期选择器的包装器。
如果我关闭对话框,然后打开一个新的对话框,日期选择器会打开并保持可见状态。如果我关闭第二个对话框,则日期选择器仍然保持打开状态。如果我打开第三个对话框,则会打开第二个日期选择器,并且即使关闭对话框后也会保持打开状态。
如何强制关闭日期选择器?或者更准确地说,当第二次或更多次打开对话框时,如何防止它打开先前的日期选择器?
编辑:下面是视图的代码:
如果我关闭对话框,然后打开一个新的对话框,日期选择器会打开并保持可见状态。如果我关闭第二个对话框,则日期选择器仍然保持打开状态。如果我打开第三个对话框,则会打开第二个日期选择器,并且即使关闭对话框后也会保持打开状态。
如何强制关闭日期选择器?或者更准确地说,当第二次或更多次打开对话框时,如何防止它打开先前的日期选择器?
编辑:下面是视图的代码:
<?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;
}