fastadmin 动态下拉表单联动
时间: 2023-08-02 13:11:32 浏览: 340
在 FastAdmin 中实现动态下拉表单联动,可以使用 FastAdmin 自带的表单组件以及 jQuery 插件 Chained Selects。
具体实现步骤如下:
1. 定义两个联动的下拉框,如下:
```php
$form->select('province_id', '省份')->options('/api/province');
$form->select('city_id', '城市')->options('/api/city')->rules('required');
```
其中 `province_id` 和 `city_id` 分别是表单项的 name 值,`/api/province` 和 `/api/city` 是获取数据的接口地址。
2. 在控制器中定义接口方法,用于获取城市数据,如下:
```php
namespace app\admin\controller;
use think\Controller;
class ApiController extends Controller
{
public function province()
{
$provinceList = db('province')->select();
return json($provinceList);
}
public function city()
{
$provinceId = input('get.province_id');
$cityList = db('city')->where('province_id', $provinceId)->select();
return json($cityList);
}
}
```
其中 `province` 方法返回所有省份数据,`city` 方法根据省份 ID 获取该省份下的城市数据。
3. 使用 Chained Selects 插件实现下拉框联动,如下:
```js
$(function() {
// 省份下拉框改变事件
$('select[name="province_id"]').change(function() {
var provinceId = $(this).val();
// 清空城市下拉框
$('select[name="city_id"]').empty();
// 动态加载城市数据
$.getJSON('/admin/api/city', {province_id: provinceId}, function(data) {
$.each(data, function(i, item) {
$('select[name="city_id"]').append('<option value="' + item.id + '">' + item.name + '</option>');
});
// 触发城市下拉框的 change 事件
$('select[name="city_id"]').trigger('change');
});
});
// 城市下拉框改变事件
$('select[name="city_id"]').change(function() {
// TODO: 根据城市 ID 加载其他数据
});
// 初始化省份下拉框
$('select[name="province_id"]').trigger('change');
});
```
其中 `change` 事件监听省份下拉框的改变,根据选中的省份 ID 动态加载城市数据,并将加载的城市数据添加到城市下拉框中。同时,触发城市下拉框的 `change` 事件,以便根据城市 ID 加载其他数据。最后,通过触发省份下拉框的 `change` 事件,完成初始化操作。
阅读全文