2012-02-15 3 views
1

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

Вот мой код для просмотра первого выпадающего списка и ссылки для создания нового элемента с помощью 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'); ?>"> 

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

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

<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 показан как создайте новую схему, но при нажатии на ссылку она отображает старый диалог создания университета вместо создания схемы.

ответ

0

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

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

в массиве $ htmlOptions из ajaxLink