这是我正在使用的下拉菜单..
<?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教程
你要做的事实上非常简单,而且,由于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)
就是这样.
| 归档时间: |
|
| 查看次数: |
12049 次 |
| 最近记录: |