PopBup关闭后Jquery DatePicker不隐藏

时间:2012-03-30 16:20:23

标签: jquery jquery-ui yii jquery-ui-datepicker

在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;
}

1 个答案:

答案 0 :(得分:1)

您可以在加载/打开对话框之前销毁对话框内容并重新加载内容