Yii CJuidialog在点击之前自动打开

时间:2012-02-28 06:17:14

标签: jquery yii

在用户点击问号图标时遇到问题我正在尝试创建弹出文本框。但是,出于某种原因,一旦页面加载,弹出窗口就会显示出来。我在视图中有以下代码。我已经尝试将自动打开更改为false,但是链接根本不会打开对话框。非常感谢你的帮助!

             <?php $question=CHtml::image(Yii::app()->request->baseURL. '/images/question_blue.ico'); 
                echo CHtml::link($question, '#', array('onclick'=>'$("#help").dialog("open"); return false;',)) ?>
             $this->renderPartial('application.views.profile.helppopup');  

以下代码在我的对话框中(“帮助”)

<?php 
$this->beginWidget('zii.widgets.jui.CJuiDialog', array(
'id'=>'help',
// additional javascript options for the dialog plugin
'options'=>array(
    'title'=>'Help',
    'autoOpen'=>true,
    'width'=>'350px',
    'height'=>'450',
    'resizable'=>false,
),
));

3 个答案:

答案 0 :(得分:0)

@jason 喜

我在“创建形式”中使用了CjuiDialog,它的工作正常。我将我的代码作为样本发布到您的问题中以获得一个想法 我的代码如下 在我看来

<?php echo CHtml::link('Create Books', "",  // the link for open the dialog
array(
    'style'=>'cursor: pointer; text-decoration: underline;',
    'onclick'=>"{addBooks(); $('#dialogBooks').dialog('open');}"));?>

 <?php
 $this->beginWidget('zii.widgets.jui.CJuiDialog', array( // the dialog
'id'=>'dialogBooks',
'options'=>array(
    'title'=>'Create Books',
    'autoOpen'=>false,
    'modal'=>true,
    'width'=>550,
    'height'=>470,
),
));?>

我的js将数据链接到控制器

   <script type="text/javascript">
   function addBooks()
   {
 <?php echo CHtml::ajax(array(
        'url'=>array('Books/create'),//your controller action 
        'data'=> "js:$(this).serialize()",
        'type'=>'post',
        'dataType'=>'json',
        'success'=>"function(data)
        {
            if (data.status == 'failure')
            {
                $('#dialogBooks div.divForForm').html(data.div);
                      // Here is the trick: on submit-> once again this function!
                $('#dialogBooks div.divForForm form').submit(addBooks);
            }
            else
            {
                $('#dialogBooks div.divForForm').html(data.div);
                setTimeout(\"$('#dialogBooks').dialog('close') \",3000);
            }

        } ",
        ))?>;
return false; 

}

在控制器中行动

//For using create form with dialogue box 
    public function actionCreate(){ 
     $model=new Books;
if(isset($_POST['Books']))
{
  $model->attributes=$_POST['Books'];
if($model->save())
{
    if(Yii::app()->request->isAjaxRequest)
    {
        echo CJSON::encode(array(
        'status'=>'success',
        'div'=>"Books successfully added"));
        exit;
    }
    else
        $this->redirect(array('view','id'=>$model->book_id));
    }
}
if (Yii::app()->request->isAjaxRequest)
{
    echo CJSON::encode(array(
    'status'=>'failure', 
            'div'=>$this->renderPartial('_form', array('model'=>$model), true)));
        exit;               
    }
else 
    $this->render('create',array('model'=>$model));}

上面的代码只是为了得到一个想法......不是精确的o / p代码 谢谢

答案 1 :(得分:0)

我没有工作,但你的错误可能              $this->renderPartial('application.views.profile.helppopup');  你应该把它放在onclick event.do这样的东西

'onclick'=>"{help(); $('#help').dialog('open');}"));?>

尝试这样的事情,不确定答案

 <script>
function help()
{
$this->renderPartial('application.views.profile.helppopup');
}
</script>

我没有测试你只是尝试这样的事情

答案 2 :(得分:0)

更改CJuiDialog配置中的以下行:

'autoOpen'=>true,

为:

'autoOpen'=>false,