如何在使用ajax在下拉列表中选择选项时显示文本框

SHA*_*Nib 1 ajax yii

这是我正在使用的下拉菜单..

    <?php echo $form->labelEx($model,'status'); ?>
            <?php echo $form->dropDownList($model,'status',
array('0' =>'In active', '1'=> 'Active'),
array( 'onChange' => 'javascript:description()' )); ?>
Run Code Online (Sandbox Code Playgroud)

如何在动态选择非活动状态时显示文本框以进行说明...

请为初学者推荐一些yii + ajax教程

Alf*_*cia 6

你要做的事实上非常简单,而且,由于Yii的jQuery封装,你不必担心jquery代码.以下是参考资料:http://www.yiiframework.com/wiki/24/creating-a-dependent-dropdown#hh0无论如何,让我告诉你如何做到这一点.但在我向您提出问题之前:这行代码:array( 'onChange' => 'javascript:description()' )是您尝试解决此问题吗?或者它是否具有与此主题无关​​的其他功能?如果它是您尝试解决问题的一部分,那么只需将其删除即可.你不需要那个.正如我之前告诉过你的,你不需要担心实际的jquery代码,它很好地封装在Yii中.换句话说,如果它与这个主题无关,那么当然要把它放在原处.

现在,关于ajax更新.首先,我们需要一个div来显示文本框; 我将使用description_id div.然后,在dropdownlist()中指定ajax请求,如下所示:

<?php echo $form->labelEx($model,'status'); ?>
<?php echo $form->dropDownList($model,'status',
array('0' =>'In active', '1'=> 'Active'),
array( 'onChange' => 'javascript:description()', 
       'ajax'=>array(
          'type'=>'POST',
          'url'=>CController::createUrl('YourController/actionWhichEchoesTheTextBox'),
          'update'=>'#description_id',
))); 
?>
<div id="description_id">
</div>
Run Code Online (Sandbox Code Playgroud)

您可能会注意到,在ajax声明的'url'属性中,我们指定了在ajax请求触发时将调用的函数.在'update'属性中,我们指定了div,其中将显示调用url属性中指定的函数的结果.

最后,剩下要做的就是声明动作actionWhichEchoesTheTextBox().它可以在任何控制器中声明,但如果它不在当前控制器中,则必须将其声明为静态方法,以便在此处访问它.所以为了避免任何问题,你应该在当前控制器中声明它,它看起来像这样:

    public function actionWhichEchoesTheTextBox()
   {
      if($_POST['ModelName']['status']===0)
         echo CHtml::textField("ModelName", 'description'/*attribute name*/) ; 
   }
Run Code Online (Sandbox Code Playgroud)

就是这样.