我的表单中有一个下拉列表,我想让用户选择'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')); ?>
感谢。
答案 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';
}]