【发布时间】:2012-03-30 16:20:22
【问题描述】:
在 Yii 中,我有一个使用 CJuiDialog 的模式弹出窗口,它是 jquery 对话框的包装器。在这个对话框中,我有一个 CJuiDatPicker,它是 jquery 的 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;
}
【问题讨论】:
-
你能把你的代码。您没有正确编码对话框中的日期选择器,因此请向我们展示您的整个视图的代码。
-
刚刚添加了视图中处理这个的代码
-
好的,刚刚确定它在 Firefox 中可以正常工作 - 但 Chrome 是问题所在。
标签: jquery jquery-ui yii jquery-ui-datepicker