【问题标题】:Referencing Select Drop-down Value in Yii在 Yii 中引用 Select 下拉值
【发布时间】:2013-01-16 02:50:35
【问题描述】:

问题:使用CActiveForm dropDownList 我试图让它在更改时发布选定的值。但我不确定如何引用当前选择的下拉值?

到目前为止的代码是:

$form->dropDownList($model,'condition',$model->getConditionOptions(), array('submit'=>array('theme/build','id'=>$model->id,'condition'=>'')));

getConditionOptions 返回一个下拉值数组,'condition' 应该是从此下拉列表中选择的值。

【问题讨论】:

标签: php yii


【解决方案1】:

不要仅仅为了获得当前值而指定属性 - 这违背了下拉菜单的目的。

要获取下拉列表的当前值,请在您的 jquery 中使用 jQuery 的 val:http://api.jquery.com/val/,例如:

$("#DropDownID").val()

编辑:您真正的问题似乎是如何在更改下拉列表后更新内容,具体取决于下拉列表的值。这将通过 AJAX 完成。 Yii 为此提供了一个特殊的AJAX 数组,例如:

$form->dropDownList($model,
                    'condition',
                    $model->getConditionOptions(),
                    array('submit'=>array('theme/build',
                          'id'=>$model->id,
                          'ajax'=>array('url'=>CController::createURL('controller/action'),
                                        'data'=>'$("#' . $model->id . '")',                                   
                                        'update'=>'#otherID', //selector to update
                                        )
                                    )
                          )
                    );

然后,在您的控制器端,您可以使用getParam 获取值。请注意,您要更新的任何内容都应回显,而不是使用渲染。

编辑2:如果你不想使用jQuery,而只是重新加载整个页面,你应该只提交表单,例如:

$form->dropDownList($model, 'condition', $model->getConditionOptions(), array('submit'=>CController::createURL('controller/action')))

然后在你的控制器中,你仍然会使用 getParam 然后渲染一个新页面。

【讨论】:

  • 我会把这个 jQuery 放在哪里?我试图在每次更改值时使用下拉列表的值设置控制器变量 $condition。
  • @MichaelGruber 更新了答案以解决您的评论。请记住,javascript 将运行客户端,而 PHP 将运行服务器端,所以一般来说,您的控制器和 javascript 中不会有持久变量。
  • 问题是我不确定 Ajax 是否是我想要的。我不想更新特定的 div 或任何我想用传入的新变量参数(下拉列表的值)实质上重新加载页面的内容
  • 如果您不想使用 AJAX,那么您只需提交表单并从那里开始。
  • 我同意。我不确定的是提交更改值并访问控制器中的值。
【解决方案2】:

我认为你可以这样做:

//define your dropdownlist
$form->dropDownList(
    $model,
    'condition',
    $model->getConditionOptions(),
    //your ajax call
    'ajax'  => array( 
        'type'  => 'POST',
        'url'   => 'theme/build'.
        'data'  => array(
            'id' => $model->id,
            'condition' =>'js:jQuery(this).val()', //current value
        )
);

编辑: 获取当前选择的选项:

$('#dropbox').val();

$('#dropbox :selected').val();

获取当前选择的选项文本

$('#dropbox :selected').text();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    相关资源
    最近更新 更多