Yii2根据自动完成中的选定值填充多个字段

时间:2017-05-29 06:59:38

标签: jquery autocomplete yii2

我的模型包含列cnic,名称,年龄,城市等。 当用户开始输入cnic值时,我想要的是,如果该cnic已经在数据库中,那么应该出现完整的cnic值,并且在选择该值时,名称,年龄,城市的值将自动填入文本输入。 目前它是。

  $data = Patient::find()->all();
    foreach($data as $cnics){
        $cnic[] = $cnics->cnic;
    }

   echo $form->field($model, 'cnic')->widget(yii\jui\AutoComplete::classname(), [
        'clientOptions' => [
            'source' => $cnic,
            'select' => //some code
],  

<?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'age')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'address')->textInput(['maxlength' => true]) ?>

1 个答案:

答案 0 :(得分:0)

'clientOptions' => [
            'source' => $cnic,
            'select' => new \yii\web\JsExpression("function( event, ui ) {
                    var cnic = ui.item.value;
                    complete(cnic);
            }")
        ],
在jquery代码中

function complete(id){

        $.ajax({
           url: "?r=patient/autocomplete",
           type: 'post',
           data: {cnic: id},
           success: function(data) {

               var obj = JSON.parse(data);

                $('#patient-name').val(obj[0].name);
                $('#patient-age').val(obj[0].age);
                $('#patient-dob').val(obj[0].dob);
                $('#patient-address').val(obj[0].address);
                $('#patient-city').val(obj[0].city);
           }
        });
控制器中的

public function actionAutocomplete()
{
    $cnic = $_POST['cnic'];
    $query = ModelName::find()->where(['cnic'=> $cnic])->one();
    $data[] = ['name' => $query->name,'dob'=> $query->dob, 'age' =>$query->age, 'address'=> $query->address, 'city' => $query->city];
    echo json_encode($data);
}