簡體   English   中英

當用戶從yii2的下拉列表中選擇名稱時,如何獲取並在另一個表單字段中顯示用戶名?

[英]how to get and display username in another form field when user select name from dropdownlist in yii2?

當用戶在上面的下拉列表中選擇講師姓名時,我想以另一種文本輸入字段形式顯示講師用戶名。 這是我的表格

這是我的下拉列表講師姓名的代碼

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

這是我講師用戶名的代碼

<?= $form->field($model, 'LecUsername')->textInput(['maxlength' => true]); ?>

我想根據上面選擇的下拉列表獲取並顯示LecUsername。 LecUsername來自數據庫。

使用下拉菜單時,您需要綁定下拉菜單的change事件,以將下拉列表中的值插入到輸入文本中。 為了確保您要為LecturerName插入LecUsername ,您需要將LecUsername作為下拉列表的值,這意味着下拉數據應具有username字段作為索引,當前您使用fullname作為索引和值,因此根據您為用戶名使用的字段名稱更改代碼,我假設它是示例的username

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

因此您的下拉代碼如下所示

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

然后在您擁有表單的視圖文件頂部添加以下內容

$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);

下拉菜單的更好方法是使用庫Kartik-v \\ select2並使用event pluginEvents選項指定事件select2:select ,在這種情況下,您的代碼應如下所示。

// 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());
         }); }',
    ]
]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM