【问题标题】:Yii dropdownlist depending on two dropdownlistsYii 下拉列表取决于两个下拉列表
【发布时间】:2014-01-21 21:56:10
【问题描述】:

我看到this wiki 使用带有更新选项的 ajax 调用填充城市的下拉列表,具体取决于包含国家/地区的另一个下拉列表的值。我需要实现类似的东西,但我的下拉列表依赖于两个下拉列表:

<div class="row">
    <?php echo CHtml::label('Countries', 'country_id'); ?>
    <?php echo CHtml::dropdownlist('country_id', '',$countries); ?>
</div>

<div class="row">
    <?php echo $form->labelEx($model,'globaladmin'); ?>
    <?php echo $form->dropDownList($model,'globaladmin',User::itemAlias('AdminStatus')); ?>
    <?php echo $form->error($model,'globaladmin'); ?>
</div>

用户必须选择一个国家,然后只有在第二个列表中选择“否”时,必须使用城市信息填充新的下拉列表(就像在 wiki 示例中一样)。

正如我所说,它与示例类似,但新的下拉列表取决于 2 个值(在第一个列表中选择的国家的 id 以及是否在第二个列表中选择了“否”)。我该如何解决?

编辑:再解释一下

在示例中,包含 ajax 调用的国家/地区下拉列表如下:

echo CHtml::dropDownList('country_id','', array(1=>'USA',2=>'France',3=>'Japan'),
array(
'ajax' => array(
'type'=>'POST', //request type
'url'=>CController::createUrl('currentController/dynamiccities'), //url to call.
'update'=>'#city_id', //selector to update
))); 

我无法在我的country 列表中定义这样的 ajax 调用,因为我必须等待第二个保管箱的值。只有在此列表中选择“否”时,才会执行 ajax(并填充并显示 city 下拉列表)。如果选择“是”,则必须隐藏 city 下拉列表。

【问题讨论】:

  • 我不明白问题出在哪里,您不能将您的第一个和第二个下拉值添加到您的第三个 ajax 请求中吗?
  • @AliMasudianPour 如果您看到该示例,填充city 下拉列表的ajax 调用属于country 下拉列表。在这里我不能这样做,因为我需要globaladmin 下拉列表的值。

标签: php yii


【解决方案1】:

只需在您的 globaladmin 下拉列表中添加一个 ID,然后执行以下操作:

$("#THE ID YOU HAVE SET").on('change',function(){
    // You can use $(this).val()
    // and send it via an ajax request into your own url
    var valueOfMyGlobalAdminDropDown=$(this).val();
    if(valueOfMyGlobalAdminDropDown=="yes"){
       //DO SOMETHING
    }else{
       //DO SOMETHING ELSE
    }
});

强烈建议使用 jquery live(在 jquery 版本 -1.7 中)或 jquery ON(在 jquery 版本 +1.7 中)在 ajax 请求中保持页面活动。

【讨论】:

  • 哦,我明白了!只需使用常规的 jQuery ajax 调用而不是 Yii 内置的,对吗?
  • 是的,没错。以我个人的观点,在使用 Yii 时,大多数时候最好以其他方式使用 ajax,而不是 Yii 的默认 ajax 行为:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多