繁体   English   中英

从CHtml :: dropDownList获取选定的值

[英]Get selected value from CHtml::dropDownList

我对Yii框架有疑问。

假设我有一个下拉列表,如下面列出的代码。

我需要打印选定的值,并尝试使用$_POST['countries']但没有任何反应。

我只需要将选定的值存储在变量中即可操作它。

<?php 
      echo CHtml::dropDownList('countries', $select = array(),
      CHtml::listData($countries, 'code', 'name'));
?>

$_POST对应于使用HTTP protocol发送的某些数据,因此要使用此变量,客户端(浏览器)需要将数据发送到服务器。

由于您要在用户从下拉列表中选择一个值后立即显示某些内容,因此需要使用在客户端执行的javascript。

这是一个使用jquery获取选定值的示例。 然后,您应该在要显示值的位置更新div,但是由于这不在您的问题中,所以我无济于事!

$('#dropDownId').change(function(){ 
    var value = $('#dropDownId :selected').text();
    //Here update the div where you need to see the selected value
});

其中dropDownId是您需要提供给dropDownId的ID(在CHtml :: dropDownList html选项中

您还可以使用Ajax请求。 如果要创建一些相关的下拉列表,则更好。 例如:

echo $form->dropDownList($profile, $field->varname,CHtml::listData(Countries::model()->findAll(),'short','title'), array(
    'class'=>"chzn-select",
    'empty'=>"Select country",  
    'ajax' => array(
                    'type' => 'POST',
                    'url'=>$this->createUrl('registration/state'),   
                    'update' => '#Profile_state',                        
                    'data'=>array('country'=>'js:this.value',), 
                    'success'=> 'function(data) {
                                    $("#Profile_state").empty();
                                    $("#Profile_state").append(data);
                                    $("#Profile_state").trigger("liszt:updated");

                                            } ',

    )));

然后在您的控制器中可以使用POST示例:

    public function actionState()
{

 $data=Regions::model()->findAll('country_code=:country_code', 
                  array(':country_code'=> $_POST['country']));                
 echo "<option value=''>Select state</option>";
    $data=CHtml::listData($data,'region_code','region_title');
            foreach($data as $value=>$state)  {
                        echo CHtml::tag
                                ('option', array('value'=>$value),CHtml::encode($state),true);
                    }   

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM