2012-02-15 34 views
1

yyiiのCJuiDialogウィジェットのロードに複数のajaxLinkを使用すると問題が発生します。私は複数のドロップダウンを使用しています、各ドロップダウンの値は次のドロップダウンを決定します。CJuiDialogウィジェットをロードするために複数のajaxLinkを使用することはできません

これは、最初のドロップダウンを表示するコードと、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'); ?>"> 

これはかなりうまくいきます。ここで

は、同じビューファイル

<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"; 

}); 
}); 
} 

の次のドロップダウンリストをロードするためのJavaScriptコードは、スキームビューコードは

<?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をランダムに作成することです。 追加してみてください:ajaxLink

の$ htmlOptions配列の

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

関連する問題