我使用的是laravel背包。创建了一个新的请求表单。使用"select_from_array"创建了几个字段供选择:
$this->crud->field('range')->type('select_from_array)->label(__('number range'))
->options(Group::NUMBER_RANGE);
$this->crud->field('range1')->type('select_from_array)->label(__('letter range'))
->options(Group::LETTER_RANGE);
$this->crud->field('range2')->type('select_from_array)->label(__('symbol range'))
->options(Group::SYMBOL_RANGE);
例如,每个字段都有3个下拉值可供选择(为了更清楚,假设数字范围为1/2/3,字母范围为A/B/C,符号范围为太阳/月亮/风(。
我想应用这个功能——如果我从数字范围中选择1,我希望字母范围只显示A和B(C应该从值选择中消失(,符号范围只显示Wind。或者,如果我选择字段字母范围并选择选项值B,我希望符号范围字段只显示太阳。
一般来说,我希望字段之间的反应取决于我在上一个字段上所做的选择,下一个字段将显示我可以选择的不同选项。
我该怎么做?
提前感谢:(
背包目前并不容易做到这一点,但也不会让它变得困难。
选项A-javascript
您可以使用脚本小部件在页面上推送一些javascript,它可以做任何您想做的事情,包括这个功能。
Widget::add()->type('script')->content('assets/js/admin/request_form.js');
有一个活动的pull请求试图让它更容易与前端的字段交互(PR#4312(,但在合并之前,你可以使用vanillaJS或jQuery来做任何你想做的事情。
选项B-select2_from_ajx
或者,您可以使用select2_from_jax字段类型,这确实允许您使用"dependent"属性来执行此操作。由于您可以控制AJAX端点,因此可以根据其他表单选择返回不同的结果。
但是:
- 我认为让这3个选择使AJAX请求过于夸张,因为一点JS可以对常规选择做同样的事情
- 这是一个PRO字段,因此只有当您购买了PRO插件时才可用