我试图将javascript中的值放入Yii2中的表单操作中 可能吗? 更具体地说,我需要为dropdownList中选择的每个选项进行URL更改。
在views / site.php中的表单
$form = ActiveForm::begin([
'id' => 'form',
'method' => 'POST',
'action' => Url::to(['programas/'.Tours::findOne(['pk' => ])->programa]),
]);
<?= $form->field(new \app\models\Tours(), 'nombre')->dropDownList([],
[
'prompt' => 'Programa',
'id' => 'child1_child2',
'onchange' => 'updateValue(this.value)',
]
)->label(false); ?>
Js文件
function updateValue(val){
x = document.getElementById("test").value;
// document.getElementById("form").action = "programas/";
}
所以,我用JS拯救了所选选项的值,但是我需要把它放在这里&#39; pk&#39; =&GT; &#39;值&#39;
其中value是#child1_child2选择的选项值。
'action' => Url::to(['programas/'.Tours::findOne(['pk' => ])->programa])
感谢您的帮助。
答案 0 :(得分:1)
您可以使用以下方法之一进行一些修改:
//pk => programa
$data = [
1 => 'programa1',
2 => 'programa2',
3 => 'programa3',
];
1)使用JS
<?= $form->field(new \app\models\Tours(), 'nombre')->dropDownList($data, ['prompt' => 'Programa'])->label(false); ?>
JS
$this->registerJs('
$("#dropdownID").change(function() {
var text = $("#dropdownID option:selected").text();
$("#formID").attr("action", "/pathtoproject/programas/" + text);
});
', \yii\web\View::POS_END);
2)使用Ajax Call
<?= $form->field(new \app\models\Tours(), 'nombre')->dropDownList($data, [
'prompt' => 'Programa',
'onchange'=> '$.get( "'.Url::toRoute('get-action').'", { id: $(this).val() } )
.done(function( data ) {
$("#formID").attr("action", data);
}
);'
])->label(false); ?>
控制器的
public function actionGetAction($id)
{
$name = Tours::findOne(['pk' => $id])->programa];
echo \yii\helpers\Url::to(['programas/'.$name]);
}