Я работаю над виджетами автозаполнения. Пока это мой код.
Мой взгляд:
<?php $data = Company::find() ->select(['name as value', 'name as label','c_id as id']) ->asArray() ->all(); echo AutoComplete::widget([ 'name' => 'Company', 'id' => 'ddd', 'clientOptions' => [ 'source' => $data, 'autoFill'=>true, 'minLength'=>'4', 'select' => new JsExpression("function( event, ui ) { console.log(ui); $('#user-company').val(ui.item.id); }")], ]); ?> <?= Html::activeHiddenInput($model, 'company')?>
При выборе опции параметры автозаполнения обновляются в текстовом поле, но не обновляются скрытое поле.
Как я могу получить скрытое поле для обновления при выборе опции?
Вы можете использовать следующие свойства:
labels
– показаны в раскрывающемся меню, value
– переходит в поле ввода после выбора, id
– дополнительный параметр для использования поля hiden. Например:
<input type="hidden" id="user_company" name="user_company" value="qwe"> <?php use yii\web\JsExpression; echo AutoComplete::widget([ 'name' => 'company', 'id' => 'ddd', 'clientOptions' => [ 'source' => [ ['label'=>'color1', 'value'=>'key1', 'id'=>'c_id1'], ['label'=>'color2', 'value'=>'key2', 'id'=>'c_id2'] ], 'autoFill'=>true, 'minLength'=>'0', 'select' => new JsExpression("function( event, ui ) { console.log(ui); $('#user_company').val(ui.item.id); }") ], ]);?>