jsp 二级联动下拉表单框数据回显_047 Ajax 三级联动与搜索框提示语

12f7e1715f880ef494e419aab3769b79.png

12 Ajax 案例之省市区三级联动

三级联动定义:页面中有三个下拉框选项,分别为
省、市、县下拉框,选择对应的框,显示对应的省、市、县信息。
技术分析:ajax技术+jsp+servlet+jdbc
需求分析(思路):
​ 1、 创建页面:页面中有三个下拉框,分别为省、市、县区
​ 2、页面加载成功发起 ajax 请求,请求省的信息,并将响应的经过填充到省下拉框中
​ 3、选择省信息,请求对应的市信息,并将响应结果填充到下拉框中
​ 4、选择市信息,请求对应的区/县信息,并将响应结果填充到下拉框中
数据库设计:
​ 创建表(area) : 存储了省、市、区/县信息
​ 设计表实现一:只存储了数据,但是数据的层次关系没有体现
​ 地区id:areaid
​ 地区名:areaname
​ 设计表实现二:
​ 地区id:areaid
​ 地区名:areaname
​ 地区上级id:parentid
​ sql语句设计:
​ 查询所有的省信息 :select * from area where parentid=0;
​ 查询选择的省下的市信息(假如:选择的省的areaid 为110000)
​ select * from area where areaid = 110000;
​ 查询选择市下的县/区信息(假如:选择的市的areaid 为120000):
​ select * from area where areaid = 120000;
​ 代码: select * from area where areaid = ?;
​ 数据库实现:导入 area.sql 语句执行
代码缺陷:
​ 代码的重复冗余大
解决:相同的保留,不同的传参

12.1 代码实现

只展现前端代码,后面只做一个事情。
bug,选择每个下拉框的第一个地区,体验不好。

12.1.1 未加联动

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

12.1.2 添加联动

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

12.1.3 封装

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

12.2 效果图

  • 未加联动

79cbcacfa2a6e61fe1bd87249a0df892.gif
  • 加联动

![](http://www.zwer.xyz/picGo/ajax_area - 副本.gif)

12.3 总结

  1. 良好的数据库设计,可让后期操作更加便捷。

```sql select * from area where areaid = ?;

```

  1. 实现联动的代码举例
<

13 ajax 案例之搜索框提示语

功能需求:
​ 用户再搜索框中输入关键字,然后搜索框出现下拉选项,提示关键字的提示语
​ 用户可以使用鼠标进行提示语的选择,也可以使用键盘的上下键选择
技术分析:
​ ajax技术+servlet+jsp+jdbc
功能分析(思路):
​ 1、创建搜索界面(搜索框和提示语div 和搜索按钮)
​ 2、 给搜索框添加 onkeyup 时间, 键盘弹起时发送 ajax 请求
​ 请求当前用户输入的信息对应的提示语数据
​ 3、将提示语数据填充到搜索框下的div 中
​ 4、实现使用鼠标选择提示语
​ 5、实现使用键盘的上和下键选择提示语
​ 6、实现鼠标和键盘的联动操作
​ 7、将显示提示语的 div 进行隐藏,当有提示语的时候进行显示
完善:
​ 问题:只要用户在搜索框中出现键盘点击动作,都会触发键盘事件的执行
​ 而只要数据符合要求,都会发送 ajax 请求,请求提示语信息。点击一次都发一次。
​ 但是其实只需求最后一次进行请求发生即可。
​ 解决1:
​ 使用延迟发送请求
​ 使用1:
​ window.setTimeout()
​ 问题2:
​ even 对象在火狐浏览器中使用window.event 获取不到
​ 解决:
​ 函数声明形参 event,必须是event
​ var reg = /^s+$/g/ 空格校验
数据库设计:
​ 创建表:(data)存储了常用的关键字数据
​ 关键字编号:id
​ 关键字数据:title
​ 次数:count
​ 说明:remark
​ 添加测试数据:要求前期测试数据为英文单词
​ SQL 语句设计:查询以用户当前搜索框数据开头的关键字
​ select * from data where title like 'a%';

13.1 添加鼠标悬停事件

小技巧:将 css 赋于空字符串,即可清空属性值
注意:事件一定是添加已经存在的 html 代码上的,即注意事件添加的位置
<

13.2 键盘上下键选择

选择当前 div 的位置,通过全局变量 count 控制。
<

13.3 获取键盘输入的 javascript 码值

利用 BOM 对象中 window.event.keyCode
注意:keyCode 中 k 小写
<

13.4 延迟函数

var id = window.setTimeout(function(){},delay) ,注意 id 相当于线程号
window.clearTimeout(id) ,清空当前延时线程,防止每次键盘弹出都发送一个 ajax 请求,浪费资源
<

13. 5 代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

13.6 总结

  1. 搜索提示语设计涉及的 js 知识较多,其中 BOM 对象使用不太熟悉。
  2. 搜索提示语其中的细节比较多。

14 ajax 整合项目之删除用户

功能分析:在当前页面上删除用户,然后刷新当前浏览器。
<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Vue+TypeScript和Element Plus的三级联动数据回显,可以按照以下步骤进行实现: 1. 首先,在Vue组件中定义省市区的数据源,可以使用数组或者对象的形式存储。例如: ```typescript data() { return { provinceList: [], // 省份数据源 cityList: [], // 城市数据源 districtList: [], // 区县数据selectedProvince: '', // 选中的省份 selectedCity: '', // 选中的城市 selectedDistrict: '', // 选中的区县 // 其他数据... }; }, ``` 2. 在组件的`mounted`生命周期钩子函数中初始化省份数据源,并根据选中的省份获取对应的城市和区县数据。例如: ```typescript mounted() { // 初始化省份数据源 this.provinceList = [ { id: 1, name: '北京' }, { id: 2, name: '上海' }, { id: 3, name: '广东' }, // 其他省份... ]; // 根据选中的省份获取城市和区县数据 this.fetchCityList(this.selectedProvince); this.fetchDistrictList(this.selectedCity); }, ``` 3. 实现方法`fetchCityList`和`fetchDistrictList`,用于根据选中的省份和城市获取对应的城市和区县数据。可以使用ajax、axios或者其他方式获取数据。例如: ```typescript methods: { fetchCityList(provinceId: number) { // 根据省份ID获取城市数据,此处假设省份ID与城市数据对应 this.cityList = [ { id: 11, name: '北京市' }, { id: 12, name: '天津市' }, { id: 13, name: '石家庄市' }, // 其他城市... ]; // 清空选中的城市和区县 this.selectedCity = ''; this.selectedDistrict = ''; }, fetchDistrictList(cityId: number) { // 根据城市ID获取区县数据,此处假设城市ID与区县数据对应 this.districtList = [ { id: 111, name: '东城区' }, { id: 112, name: '西城区' }, { id: 113, name: '朝阳区' }, // 其他区县... ]; // 清空选中的区县 this.selectedDistrict = ''; }, }, ``` 4. 在模板中使用`<el-select>`组件实现三级联动选择,并绑定选中的值和数据源。例如: ```html <el-select v-model="selectedProvince" placeholder="请选择省份" @change="fetchCityList(selectedProvince)"> <el-option v-for="province in provinceList" :key="province.id" :value="province.id" :label="province.name"></el-option> </el-select> <el-select v-model="selectedCity" placeholder="请选择城市" @change="fetchDistrictList(selectedCity)"> <el-option v-for="city in cityList" :key="city.id" :value="city.id" :label="city.name"></el-option> </el-select> <el-select v-model="selectedDistrict" placeholder="请选择区县"> <el-option v-for="district in districtList" :key="district.id" :value="district.id" :label="district.name"></el-option> </el-select> ``` 通过以上步骤,就可以实现省市区三级联动数据回显的功能了。当选择省份时,会根据选中的省份动态获取对应的城市数据;当选择城市时,会根据选中的城市动态获取对应的区县数据。同时,选中的值会与`selectedProvince`、`selectedCity`和`selectedDistrict`进行双向绑定,以便在提交表单或其他操作时使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值