не может использовать несколько ajaxLink для загрузки виджета CJuiDialog - PullRequest
1 голос
/ 15 февраля 2012

У меня проблема при использовании нескольких ajaxLink для загрузки CJuiDialog виджета в yii. Я использую несколько раскрывающихся списков, значение каждого раскрывающегося списка определяет следующее раскрывающееся меню.

Вот мой код для просмотра первого выпадающего списка и ссылка для создания нового элемента с использованием Cdialog виджета.

    <?php $cs = Yii::app()->getClientScript();
    $cs->registerCoreScript("jquery");
     ?>
  <div class="form">
     <?php $form=$this->beginWidget('CActiveForm', array(
    'enableAjaxValidation'=>false,
     )); ?>
   <div class="row">
            <?php
            echo $form->labelEx($model,'uname'); ?>
            <?php echo $form->dropDownList($model,'uname',$model-         >getUniversityList(),array('onchange'=>'getSchemes(this.value)','empty'=>'Select university')); ?>
            <?php echo $form->error($model,'uname'); ?>
          <?php //create university dialoge box
                  if(!Yii::app()->user->isGuest) 
                   {
                         echo CHtml::ajaxLink('create new university',array('university/dialoge'),array(
              'success'=>'js:function(data){
             $("#createUniversity").dialog("open");
              document.getElementById("create_university").innerHTML=data;
                              }'));
             $this->beginWidget('zii.widgets.jui.CJuiDialog',array(
              'id'=>'createUniversity',
              'options'=>array(
                'title'=>'Create University',
                'autoOpen'=>false,
                'modal'=>'true',
                'width'=>'auto',
                'height'=>'auto',
            ),
            ));
           echo "<div id='create_university'></div>";
                          $this->endWidget('zii.widgets.jui.CJuiDialog');
            }
?>
       <div id="scheme">
      </div>
       </div>
<?php $this->endWidget(); ?>
</div>
<input type="hidden" id="url" value="<?php echo $this->createUrl('scheme/test'); ?>">

это работает довольно хорошо.

вот код javascript для загрузки следующего выпадающего в том же файле вида

<script type="text/javascript">
   function getSchemes(uid)
   {
  if(uid==""){
 document.getElementById("scheme").innerHTML='';
   return;
   }
   jQuery(function($){

 var url=document.getElementById("url").value;
 $.post(url, { uid:uid },
 function(data){
 document.getElementById("scheme").innerHTML=data; 
    document.getElementById("scheme_link").style.display="block";

});
 });
}

Раскрывающийся список схемы загружается, так как код вида схемы равен

 <?php $cs = Yii::app()->getClientScript();
   $cs->registerCoreScript("jquery");
   ?>
  <?php
    echo "<div class=".'label'."><label for=".'sch'.">Scheme</label></div>";
    echo "<select id=".'sch'." onchange='getDepartments(this.value);'>";
     echo "<option value=".''.">"."Select Scheme</option>";
            foreach($schemes as $s)
             {
             echo "<option value='".$s->schemeid."' >".$s->scheme_name."</option>";
             }
             echo "</select>";
       ?>
    <?php
        if(!Yii::app()->user->isGuest) 
        {
                         echo CHtml::ajaxLink('create new             Scheme',array('scheme/dialoge','id'=>5),array(
              'success'=>'js:function(data1){
             $("#createScheme").dialog("open");
              document.getElementById("create_scheme").innerHTML=data;
                              }'));?>
                              <?php
                              $this->beginWidget('zii.widgets.jui.CJuiDialog',array(
              'id'=>'createScheme',
              'options'=>array(
                'title'=>'Create Scheme',
                'autoOpen'=>false,
                'modal'=>'true',
                'width'=>'auto',
                'height'=>'auto',
            ),
            ));
           echo "<div id='create_scheme'></div>";
                          $this->endWidget('zii.widgets.jui.CJuiDialog');
            } 
    ?>
    <div id="department">
    </div>
   <input type="hidden" id="urldepart" value="<?php echo $this->createUrl('department/test'); ?> ">

второй ajaxLink отображается как создать новую схему, но при нажатии на ссылку вместо старой схемы появляется старое диалоговое окно создания университета.

1 Ответ

0 голосов
/ 13 мая 2012

Самое простое решение для этого - создать идентификатор элемента, который вызывает проблемы, как случайный.Попробуйте добавить:

'id' => 'some-element'.uniqid() // avoid mutliple ajax request because of using live

в массив $ htmlOptions ajaxLink

...