2012-03-30 175 views
4

在Yii我有一個模式彈出使用CJuiDialog這是jquery的對話框的包裝。在這個對話框中,我有一個CJuiDatPicker,它是jquery的datepicker的包裝器。Jquery DatePicker不隱藏彈出後關閉

如果我關閉對話框,然後打開一個新的對話框,日期選擇器打開並保持可見。如果我關閉第二個對話框,日期選擇器保持打開狀態。如果我打開第三個對話框,第二個日期選擇器即使在關閉對話框後也會打開並保持打開狀態。

如何強制datepicker關閉?或者,如果第二次或更多時間打開對話框時可能會更加正確,那麼如何防止打開以前的日期選擇器?

編輯:代碼視圖如下:

<?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

你可以把你的代碼。您沒有正確編寫對話框中的日期選擇器,因此請向我們展示您的整個視圖的代碼。 – 2012-03-30 17:23:30

+0

剛剛添加了代碼處理這個 – w00tw00t111 2012-03-30 18:05:17

+0

好吧,只是確定它在Firefox中工作正常 - 但鉻是一個給出問題的人。 – w00tw00t111 2012-03-30 21:44:52

回答

1

可以加載之前破壞對話內容/打開對話框,relod內容再次