2012-02-28 3 views
0

есть проблема, когда я пытаюсь создать всплывающие текстовые поля, когда пользователь нажимает значок значка вопроса. Однако по какой-то причине всплывающие окна появляются, как только загружается страница. На мой взгляд, у меня есть следующий код. Я попытался изменить auto-open на false, но тогда ссылка вообще не откроет диалоговое окно. Большое спасибо за помощь!Yii CJuidialog, который открывается автоматически, перед нажатием

   <?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, 
), 
)); 
+0

является то, что полный файл helppopup? если нет, показать полный всплывающий файл, пожалуйста. –

+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));} 

вышеуказанная треска эс, чтобы получить представление только ... не точно о/р код спасибо

+0

Привет, спасибо за ответ - это здорово - однако я не ищу cjuidialog с формой или кодом javascript. Это очень простое диалоговое окно с текстом. У меня есть cjuidialog, работающий в других частях моего сайта, хотя и не в этом случае. Я забыл упомянуть, что у меня есть эта диалоговая ссылка onclick внутри CActiveForm - вот почему это создает проблемы? – Jason

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> 

я не тест, который вы просто попробовать что-то вроде этого

0

Измените следующую строку в CJuiDialog конфигурации из:

'autoOpen'=>true, 

к:

'autoOpen'=>false, 
Смежные вопросы