首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据Yii2 dropdown2选择的dropdown1

根据Yii2 dropdown2选择的dropdown1
EN

Stack Overflow用户
提问于 2019-01-14 07:16:08
回答 2查看 300关注 0票数 0

我有两个标准的下降率:

代码语言:javascript
运行
复制
$form->field($model, 'typ_id')->dropDownList(
    \yii\helpers\ArrayHelper::map(app\models\Plra::find()->all(), 'id', 'name'),
);

代码语言:javascript
运行
复制
$form->field($model, 'tol_id')->dropDownList(
    \yii\helpers\ArrayHelper::map(app\models\Plratol::find()->all(), 'id', 'name')
);

如果选择了一个特定的tol_id值,我希望在下拉typ_id中选择一个特定的值(实际上是作为建议,作为缺省值)。基本上这两个下降是独立的。作为一种实现我想要的东西的解决办法,我可以让它成为一个依赖的下拉列表:

代码语言:javascript
运行
复制
$form->field($model, 'typ_id')->dropDownList(
    \yii\helpers\ArrayHelper::map(app\models\Plra::find()->all(), 'id', 'name'), [
        'onchange' => '$.post("' . \Yii::$app->urlManager->createUrl('plra/listtol?typ_id=') . '"+$(this).val(), function(data) {$("select#tol_id").html(data);});',
    ]
);

代码语言:javascript
运行
复制
$form->field($model, 'tol_id')->dropDownList(
    \yii\helpers\ArrayHelper::map(app\models\Plratol::find()->all(), 'id', 'name'), [
        'id' => 'tol_id'
    ]
);

主计长:

代码语言:javascript
运行
复制
public function actionListtol($typ_id) {
    if ($typ_id == 2) {
        $plratol = Plratol::find()->where(['typ_id' => 2])->one();

        echo "<option value='" . $plratol->id . "'>" . $plratol->name . "</option>";
    } else {
        $plratols = Plratol::find()->where(['typ_id' => NULL])->all();

        echo "<option>Select</option>";
        foreach ($plratols as $plratol) {
            echo "<option value='" . $plratol->id . "'>" . $plratol->name . "</option>";
        }
    }
}

但我想知道,对于这样一个简单的依赖/场景,还有更简单的方法吗?也许麻省理工学院的js?如果是,请您提供示例代码,因为不幸的是,js不是我所熟悉的东西。

我想在没有Kartik的DepDrop扩展的情况下解决它。

EN

回答 2

Stack Overflow用户

发布于 2019-01-14 15:28:05

您可以使用纯javascript或jquery,

在第一个下拉列表中添加一个onchange()事件,并使用ajax in onchange()函数获取第二个下拉列表的所需值,并设置其html。

票数 0
EN

Stack Overflow用户

发布于 2019-01-14 16:13:50

尽管您没有任何代码可引用。如果我正确理解,如果您传递一个选定的值,您的依赖下拉列表将无法在加载中工作。你还是可以和JS一起解决这个问题。

代码语言:javascript
运行
复制
 $( document ).ready( function(){
        e = $('#parent'); // replace with your elements name
        e.change();
     }); 

上面的代码将触发change事件,您提供的任何值都将在依赖的下拉列表中使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54177116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档