繁体   English   中英

将JavaScript值传递到Yii2中的表单操作URL

[英]Pass javascript value to a form action URL in Yii2

我试图将来自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从所选选项中抢救了值,但我需要将其放在此处'pk'=>'value'

其中value是所选的#child1_child2选项值。

'action' => Url::to(['programas/'.Tours::findOne(['pk' =>  ])->programa])

谢谢您的帮助。

您可以使用以下方法之一进行一些修改:

//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通话

<?= $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]);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM