yii2在下拉列表中选择'other'选项时插入一个值

时间:2015-10-11 02:13:10

标签: yii2

我的表单中有一个下拉列表,我想让用户选择'other',这样他就可以在文本框中插入一个值,而不是下拉列表中的值。 这可能吗?

<?= $form->field($model, 'institution')->dropDownList(ArrayHelper::map(Institution::find()->all(), 'iId', 'name'),    ['class'=>'form-control inline-block']); ?>

我想用radioList做同样的事情。

<?= $form->field($model, 'selfDescription')->radioList(array('good'=>'good','very good'=>'very good','best'=>'best')); ?>

感谢。

1 个答案:

答案 0 :(得分:0)

首先。向dropDownList添加“other”选项。并使用JS

在您的前端处理它
$form
    ->field($model, 'institution')
    ->dropDownList(
        ArrayHelper::map(Institution::find()->all(),
            'iId',
            'name'
        ) + ['other' => 'Other'],
        [
            'class'=>'form-control inline-block',
            // next code disables text field when any but "other" option is selected
            // works for jQuery 1.6+
            'onchange' => new JsExpression('
                $("#textFieldSelector").prop("disabled", $(this).find("option:selected").val() != "other");'),
        ]
    );

然后你需要正确设置你的验证器。只需添加

['textField', 'required', 'when' => function($model) {
    return $model->institution === 'other';
}]