如何让用户在 yii2 的表单中隐藏和取消隐藏一些下拉列表
How to get a user to hide and unhide a few dropdown lists in a form in yii2
我正在尝试创建一个搜索表单,我想在其中隐藏表单中的一些下拉列表字段。如果用户选择,他们可以取消隐藏它(如高级搜索选项)。有没有办法在 yii2 中做到这一点?还是我必须使用 javascript 或 jquery?
还有一种方法可以定义下拉列表字段的大小。我知道你是否使用
textInput([style'=>'width:100px']);
这将用于输入文本字段,但对于下拉字段呢
<?php
$form = ActiveForm::begin([
'id' =>'-search-form-inline',
'formConfig'=>['showlabels' =>false],
'type'=> ActiveForm::TYPE_INLINE
]);
?>
<div>
<?php
echo $form->field($model, 'spec')
->dropDownList(
$specialities,
['prompt'=>'Any Speciality']
)->label('Speciality');
?>
<?php
echo $form->field($model, 'zipcode')
->textInput(['maxlength'=>10,'style'=>'width:100px']);
?>
</div>
<?php
echo $form->field($model, 'proc')
->dropDownList(
$procedures,
['prompt'=>'Any Procedures / Tests']
)->label('Procedures/Tests');
?>
<?php echo $form->field($model, 'minc')
->dropDownList(
$mincash,
['prompt'=>'Any Min']
)->label('Minimum')
->Input(['maxlength'=>10,'style'=>'width:100px']);
?>
<?php echo $form->field($model, 'maxc')
->dropDownList(
$maxcash,
['prompt'=>'Any Max']
)->label('Maximum');
?>
这是第一个例子。这里我们使用默认隐藏的容器div。
<?php
$this->registerJs("
$('#extended-search-lnk').on('click', function(e){
e.preventDefault();
$('#extended-search').toggle();
})
");
?>
<a href="#" id="extended-search-lnk">Extended Search</a>
<div id="extended-search" style="display: none;">
<?php echo $form->field($model, 'minc')
->dropDownList(
$mincash,
['prompt'=>'Any Min']
)->label('Minimum')
->Input(['maxlength'=>10,'style'=>'width:100px']);
?>
</div>
这是第二个。在这里,我们切换指定下拉菜单的可见性
<?php
$minc_attr_id = Html::getInputId($model, 'minc');
$this->registerJs("
$('#extended-search-lnk').on('click', function(e){
e.preventDefault();
$('#".$minc_attr_id."').toggle();
})
");
?>
<a href="#" id="extended-search-lnk">Extended Search</a>
<?php echo $form->field($model, 'minc')
->dropDownList(
$mincash,
['prompt'=>'Any Min']
)->label('Minimum')
->Input(['maxlength'=>10,'style'=>'width:100px']);
?>
我正在尝试创建一个搜索表单,我想在其中隐藏表单中的一些下拉列表字段。如果用户选择,他们可以取消隐藏它(如高级搜索选项)。有没有办法在 yii2 中做到这一点?还是我必须使用 javascript 或 jquery?
还有一种方法可以定义下拉列表字段的大小。我知道你是否使用
textInput([style'=>'width:100px']);
这将用于输入文本字段,但对于下拉字段呢
<?php
$form = ActiveForm::begin([
'id' =>'-search-form-inline',
'formConfig'=>['showlabels' =>false],
'type'=> ActiveForm::TYPE_INLINE
]);
?>
<div>
<?php
echo $form->field($model, 'spec')
->dropDownList(
$specialities,
['prompt'=>'Any Speciality']
)->label('Speciality');
?>
<?php
echo $form->field($model, 'zipcode')
->textInput(['maxlength'=>10,'style'=>'width:100px']);
?>
</div>
<?php
echo $form->field($model, 'proc')
->dropDownList(
$procedures,
['prompt'=>'Any Procedures / Tests']
)->label('Procedures/Tests');
?>
<?php echo $form->field($model, 'minc')
->dropDownList(
$mincash,
['prompt'=>'Any Min']
)->label('Minimum')
->Input(['maxlength'=>10,'style'=>'width:100px']);
?>
<?php echo $form->field($model, 'maxc')
->dropDownList(
$maxcash,
['prompt'=>'Any Max']
)->label('Maximum');
?>
这是第一个例子。这里我们使用默认隐藏的容器div。
<?php
$this->registerJs("
$('#extended-search-lnk').on('click', function(e){
e.preventDefault();
$('#extended-search').toggle();
})
");
?>
<a href="#" id="extended-search-lnk">Extended Search</a>
<div id="extended-search" style="display: none;">
<?php echo $form->field($model, 'minc')
->dropDownList(
$mincash,
['prompt'=>'Any Min']
)->label('Minimum')
->Input(['maxlength'=>10,'style'=>'width:100px']);
?>
</div>
这是第二个。在这里,我们切换指定下拉菜单的可见性
<?php
$minc_attr_id = Html::getInputId($model, 'minc');
$this->registerJs("
$('#extended-search-lnk').on('click', function(e){
e.preventDefault();
$('#".$minc_attr_id."').toggle();
})
");
?>
<a href="#" id="extended-search-lnk">Extended Search</a>
<?php echo $form->field($model, 'minc')
->dropDownList(
$mincash,
['prompt'=>'Any Min']
)->label('Minimum')
->Input(['maxlength'=>10,'style'=>'width:100px']);
?>