html外部下拉框表格联动,Html下拉框Select联动实例

在开发网站时,经常会有二个或多个select下拉框联动的情况,比如省份和城市二个下拉框联动,在省份下拉框里选择不同的省,第二个下拉框城市就要对应该省份下的城市数据。

下面一起来看下,怎么用Javascript生成这样的联动下拉框。

01、首先,看下我们定义的二个数组的数据,一个arr_class,是班级数据(每条数据包括班级id和班级名称)

另一个是arr_stu,是学生数据(每条数据包括学生id,所属班级,学生名称)。

我们例子做的是班级和学生的二个下拉框的联动。

frc-b83f3edb1e92b8ff9304530836423069.jpg

02、我们的初始Html代码,是二个空的select下拉框控件。

按这样的代码运行,是没有数据的二个下拉框。

frc-5e922cac98720a013c631ca0ad4e142a.jpg

frc-ae5e12fbf5af553b3df9964a0cefa80b.jpg

03、添加JS逻辑,为二个下拉框生成初始数据,我们先写一个方法,general_select_1,为第一个下拉框填充数据。

代码如图,主要是循环arr_class数组,用数组的每一项来生成一个下拉选项,然后用Jquery的append方法,加到第一个下拉框里,

frc-c112136e62f734a6d03bfdf6f8a937e5.jpg

04、再写一个方法general_select_2,为第二个下拉框填充数据,这个方法接收一个class_id的参数,根据这个参数来过滤填充的数据。比如class_id为1时,就只填充所属班级为1的学生。

这个方法主要是循环arr_stu数组,用数组里符合class_id参数的项来生成一个下拉选项,然后用Jquery的append方法,加到第二个下拉框里,

frc-eebf75894cf9c0e88ac2cfb8aca3246c.jpg

05、二个方法写好,我们就可以在页面加载完时,调用这二个方法,来填充下拉框的数据,代码如下。

general_select_1();//这个主要是填充第一个下拉框的数据

general_select_2(0);//这个主要是填充第二个下拉框的数据,这里为什么传参数0?因为第一个下拉框里有一个‘请选择班级’的选项,这是个默认选中的选项,这个选项不是一个具体的班级,所以第二个下拉框里不应该有学生的数据。

frc-4c2a54e0c8047bdb01c9e407c27a55fa.jpg

06、运行后,页面上的二个下拉框都有数据了。

frc-869261079ad2d2e465be1b5639a92009.jpg

frc-6488f16d384d32a79dcafd8ee9c14117.jpg

07、我们再为第一个下拉框添加事件代码,当选择一个班级时,就改变第二个下拉框的数据,填充上对应班级的学生数据。

代码很简单,先获取到第一个下拉框选中的项的value值,即选中哪个班级,然后调用方法2,general_select_2,并把选中的班级id做参数传进去就行了,方法2就会根据这个班级的参数过滤到正确的数据后,填充到第二个下拉框里。

varclass_id=(this).val();

general_select_2(class_id);

frc-ad537bc474e1d90d05e5571ee608320a.jpg

08、刷新页面后,我们改变第一个下拉框的值,第二个下拉框的学生数据就会跟着改变,实现了二个select的联动。

frc-243292f2b5d12131f85ade0a9f0f6295.jpg

frc-99c727fcb1ffb9b244e4864ae8c02465.jpg

frc-32c3e30471fc1ff4d111dad4042e30fd.jpg

### 回答1: 在 element-ui 中,可以通过 `cascader` 组件实现下拉框联动。以下是一个示例代码片段,实现了两个下拉框的二级联动: ``` <template> <div> <el-cascader v-model="selectedCities" :options="cities" @change="handleCityChange" clearable ></el-cascader> <el-cascader v-model="selectedDistricts" :options="districts" :show-all-levels="false" clearable ></el-cascader> </div> </template> <script> export default { data() { return { cities: [ { value: 'beijing', label: '北京', children: [ { value: 'dongcheng', label: '东城', }, { value: 'xicheng', label: '西城', }, ], }, { value: 'shanghai', label: '上海', children: [ { value: 'pudong', label: '浦东', }, { value: 'minhang', label: '闵行', }, ], }, ], districts: [], selectedCities: [], selectedDistricts: [], }; }, methods: { handleCityChange(value) { const city = this.cities.find((c) => c.value === value[0]); if (city) { this.districts = city.children; } else { this.districts = []; } this.selectedDistricts = []; }, }, }; </script> ``` 在上述代码中,我们使用了两个 `el-cascader` 组件,第一个用于选择城市,第二个用于选择区县。当城市选择发生变化时,我们根据所选城市的子节点来更新区县下拉框的选项,并将其值清空,以避免用户选择错误的区县。 ### 回答2: element是一款基于Vue.js的UI组件库,提供了一系列的常用组件。其中,element中的select组件支持二级联动功能。下面我将详细解释如何使用element-ui实现select组件的二级联动。 首先,我们需要引入element-ui的select组件和option组件,并在Vue实例中注册这两个组件。 在template中,我们需要使用el-select和el-option标签来构建下拉框。el-select用于显示下拉框,el-option用于显示下拉框的选项。 二级联动的实现思路是,根据第一个下拉框的选项,动态生成第二个下拉框的选项。我们可以通过监听第一个下拉框的值的变化,动态更新第二个下拉框的选项。具体实现如下: 1. 在data中定义需要的数据,包括第一个下拉框和第二个下拉框的选项数据。 2. 在template中,使用el-select标签构建第一个下拉框,并绑定一个v-model,用来获取选中的值。 3. 监听第一个下拉框的值的变化,使用watch选项,在回调函数中根据选中的值动态生成第二个下拉框的选项。 4. 在template中,使用el-select标签构建第二个下拉框,并绑定一个v-model,用来获取选中的值。 通过以上步骤,我们可以实现element-ui select组件的二级联动。当第一个下拉框的值改变时,第二个下拉框的选项也会相应改变。 需要注意的是,我们可以根据实际需求进行修改和扩展,例如三级联动、四级联动等,只需要在第三个、第四个下拉框中添加相应的监听和选项即可。 希望以上回答能帮助到您,如有其他问题,欢迎继续提问。 ### 回答3: element 也是一个流行的前端 UI 框架,它提供了许多实用的组件,其中包括 select 下拉框。而在 element 的 select 中实现二级联动可以通过监听第一个下拉框的变化来动态修改第二个下拉框的选项。 首先,在 Vue 的实例中,我们需要定义两个变量,例如 province 和 city,分别用来保存第一级和第二级联动的选项。然后,我们在模板中使用 element 的 select 组件,并绑定相应的变量。 在第一个下拉框中,我们需要设定一个监听函数,例如 handleChangeProvince,当选择了某一个省份时,该函数会被触发。在该函数中,我们可以根据选择的省份来更新第二个下拉框的选项,例如将 city 设为该省份所对应的城市列表。 实现这一过程的关键在于如何将第一个下拉框的选项和第二个下拉框的选项进行关联。一种常见的做法是通过一个对象的键值对来表示对应关系,例如一个 provinces 对象保存了省份和城市的对应关系,其中键表示省份,值表示对应的城市列表。当选择了某一个省份时,我们可以通过 provinces[province] 来获取该省份所对应的城市列表。 最后,我们将更新后的城市列表赋给第二个下拉框的选项,这样就实现了二级联动。需要注意的是,当再次选择第一个下拉框时,第二个下拉框的选项也需要更新,以保证联动效果。 总之,通过利用 element 的 select 组件和 Vue 的监听函数,我们可以轻松实现二级联动下拉框。这样用户可以根据自己的需求选择对应的选项,提升了用户体验和交互性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值