取得 改变前 的 select下拉框的值

本文介绍了一种在网页选择框中保留用户之前选择值的方法。通过为<select>元素添加old属性,可以确保即使页面重新加载,用户的选择也不会丢失。这种方法适用于各种前端开发场景。

<select onclick="this.old = this.value">

 

old属性就是 之前的值

### 实现省市区三级联动下拉框后端配合方法 #### 后端设计 为了实现省市区三级联动功能,后端需要提供API接口来获取省份、城市以及区县的数据。通常情况下,这些数据会存储在一个数据库表中,并通过RESTful API的形式暴露给端调用。 假设有一个名为`areas`的表格用于保存地区信息,其中包含字段:id, name, parent_id (上级区域ID),那么可以创建三个不同的路由分别用来查询不同级别的行政区划列表[^1]: - `/api/provinces`: 获取所有省级单位的信息; - `/api/cities/{provinceId}`: 根据传入的具体省份id参数返回对应的城市集合; - `/api/districts/{cityId}`: 类似于上面那个URL模式,只不过这次是依据城市的唯一标识符去查找其下属的所有县级行政单位。 对于每一个请求路径而言,在接收到客户端发来的HTTP GET请求之后,服务器应当解析出必要的查询条件并执行相应的SQL语句完成检索操作;最后再把得到的结果集转换成JSON格式响应体发送回去供端页面渲染使用[^2]。 ```python from flask import Flask, jsonify, request app = Flask(__name__) @app.route('/api/provinces', methods=['GET']) def get_provinces(): provinces_data = [ {"id": "1", "name": "北京市"}, {"id": "2", "name": "上海市"} ] return jsonify(provinces_data) @app.route('/api/cities/<string:province_id>', methods=['GET']) def get_cities_by_province(province_id): cities_data = [{"id": f"{province_id}-1", "name": f"City {province_id}A"}] return jsonify(cities_data) @app.route('/api/districts/<string:city_id>', methods=['GET']) def get_districts_by_city(city_id): districts_data = [{"id": f"{city_id}-1", "name": f"District {city_id}A"}] return jsonify(districts_data) ``` #### 端开发 在HTML文档内部定义好容器标签以便放置各个级别选项卡组件,同时引入JavaScript库(如jQuery或Axios)简化AJAX交互过程。当用户改变第一个select元素的选择项时触发事件监听器向后台发起异步加载命令取得下一层次级别的可选项目填充到下一个dropdown list里边去直到最后一层为止[^3]。 ```html <select id="province"> <!-- Options will be populated via AJAX --> </select> <select id="city"> <!-- Options will be populated based on selected province --> </select> <select id="district"> <!-- Options will be populated based on selected city --> </select> <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script> <script type="text/javascript"> document.addEventListener('DOMContentLoaded', function () { axios.get('/api/provinces') .then(response => populateOptions('#province', response.data)); document.getElementById('province').addEventListener('change', event => { const provinceId = event.target.value; if (!provinceId) return; axios.get(`/api/cities/${provinceId}`) .then(response => populateOptions('#city', response.data)); clearSelectElement('#district'); }); document.getElementById('city').addEventListener('change', event => { const cityId = event.target.value; if (!cityId) return; axios.get(`/api/districts/${cityId}`) .then(response => populateOptions('#district', response.data)); }); }); function populateOptions(selector, data){ let selectElm = $(selector); selectElm.empty(); $.each(data,function(index,item){ $("<option>").val(item.id).text(item.name).appendTo(selectElm); }) } function clearSelectElement(selector){ $(selector).empty().append($("<option></option>")); } </script> ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值