我有两个标准的下降率:
$form->field($model, 'typ_id')->dropDownList(
\yii\helpers\ArrayHelper::map(app\models\Plra::find()->all(), 'id', 'name'),
);
和
$form->field($model, 'tol_id')->dropDownList(
\yii\helpers\ArrayHelper::map(app\models\Plratol::find()->all(), 'id', 'name')
);
如果选择了一个特定的tol_id
值,我希望在下拉typ_id
中选择一个特定的值(实际上是作为建议,作为缺省值)。基本上这两个下降是独立的。作为一种实现我想要的东西的解决办法,我可以让它成为一个依赖的下拉列表:
$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);});',
]
);
和
$form->field($model, 'tol_id')->dropDownList(
\yii\helpers\ArrayHelper::map(app\models\Plratol::find()->all(), 'id', 'name'), [
'id' => 'tol_id'
]
);
主计长:
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扩展的情况下解决它。
发布于 2019-01-14 15:28:05
您可以使用纯javascript或jquery,
在第一个下拉列表中添加一个onchange()
事件,并使用ajax in onchange()
函数获取第二个下拉列表的所需值,并设置其html。
发布于 2019-01-14 16:13:50
尽管您没有任何代码可引用。如果我正确理解,如果您传递一个选定的值,您的依赖下拉列表将无法在加载中工作。你还是可以和JS一起解决这个问题。
$( document ).ready( function(){
e = $('#parent'); // replace with your elements name
e.change();
});
上面的代码将触发change
事件,您提供的任何值都将在依赖的下拉列表中使用。
https://stackoverflow.com/questions/54177116
复制相似问题