2012-02-15 30 views
1

我在yii中使用多个ajaxLink加载CJuiDialog小部件时出现问题。我使用多个下拉菜单,每个下拉菜单的值决定下一个下拉菜单。无法使用多个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'); ?>"> 

这个工程很不错。

这里是在同一视图文件加载下一个下拉的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被示出为创建新的方案,但点击链接时,它会显示旧的创建大学对话框,而不是创建方案。

回答

0

最简单的解决方法是创建引起问题的随机元素的ID。 尝试添加:

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

的$ htmlOptions数组中