首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当用户在yii2中从下拉列表中选择名称时,如何在另一个表单字段中获取和显示用户名?

问当用户在yii2中从下拉列表中选择名称时,如何在另一个表单字段中获取和显示用户名?
EN

Stack Overflow用户
提问于 2018-11-09 12:48:12
回答 1查看 527关注 0票数 0

当用户在上面的下拉列表中选择讲师名称时,我希望在另一个文本输入字段表单中显示讲师用户名。

​

这是我下拉列表讲师名的代码。

代码语言:javascript
复制
<?= $form->field($model, 'LecturerName')->dropDownList(
        ArrayHelper::map(User::findAll(['category' => 'lecturer']),'fullname','fullname'),
        ['prompt'=>'Select Lecturer']
        ) ?>

这是我的讲师用户名代码

代码语言:javascript
复制
<?= $form->field($model, 'LecUsername')->textInput(['maxlength' => true]); ?>

我想得到并显示基于上面选择的下拉列表的LecUsername。LecUsername来自数据库。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-09 13:08:49

在使用下拉列表时,需要为下拉列表绑定change事件,以便将下拉列表中的值插入到输入文本中。为了确保您正在为LecUsername插入LecturerName,您需要将LecUsername作为下拉列表的值,这意味着下拉数据应该以username字段作为索引,目前您正在使用fullname作为索引和值,因此根据用户名的字段名更改代码,我假设示例是username。

ArrayHelper::map(User::findAll(['category' => 'lecturer']),'username','fullname')

所以你的下拉代码看起来就像

代码语言:javascript
复制
<?= $form->field($model, 'LecturerName')->dropDownList(
        ArrayHelper::map(User::findAll(['category' => 'lecturer']),'username','fullname'),
        ['prompt'=>'Select Lecturer']
        ) ?>

然后在有表单的视图文件的顶部添加下面的内容

代码语言:javascript
复制
$ddId=Html::getInputId($model, 'LecturerName');
$inputId=Html::getInputId($model, 'LecUsername');

$js = <<< JS
$(document).ready(function(){
    $("#{$ddId}").on('change',function(e){
        $("#{$inputId}").val($(this).val());
    });
});
JS;
 $this->registerJs($js, \yii\web\View::POS_READY);

一个更好的下拉列表方法是使用库卡蒂克-v\select2 2并使用event pluginEvents选项来指定事件select2:select,在这种情况下,您的代码应该如下所示。

代码语言:javascript
复制
// Usage with ActiveForm and model
echo $form->field($model, 'LecturerName')->widget(Select2::classname(), [
    'data' => ArrayHelper::map(User::findAll(['category' => 'lecturer']),'username','fullname'),
    'options' => ['placeholder' => 'Select Lecturer'],
    'pluginOptions' => [
        'allowClear' => true
    ],
    'pluginEvents'=>[
        "select2:select" => 'function() { $("#{$ddId}").on('change',function(e){
             $("#{$inputId}").val($(this).val());
         }); }',
    ]
]);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53226001

复制
相关文章

相似问题

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