无刷新实现无限级联动菜单(转贴)

基于 tp5 layui select 四级联动 可无限级联动 html 部分 <div class="layui-form-item layui-form-pane"> <label class="layui-form-label">城市联动</label> <div class="layui-input-inline" > <select name="province" lay-verify="required" lay-search="" lay. 阅读详情

简介:

此文发表由冰河原创的:无刷新实现无限级联动菜单,由XMHTTP,JAVASCRIPT,ASP实现,看分为三个部分,文件 index.htm、文件 server.asp、 数据库 data.mdb

代码就数据库文档如下:

index.htm

'**************************************************
<!--
使用说明及注意事项:
假如有N级边动菜单.
javascript函数调用:
GetResult(objname ,nextallobj_str, str , nextobj)
参数说明: 
  objname  :  当前变化的菜单名字(即name)
  nextallobj_str :  当前变化菜单之后的所有菜单name的连接(中间用 "|" 连接)
  str  :  当前变化菜单的value值(此值当为数据库相关表中连接上下两级菜单的关键值) 
  nextobj  :  当前菜单的下一个菜单对象


-->

<script language="JavaScript">
function GetResult(objname ,nextallobj_str, str , nextobj)
{
 var yy = new Array();
    yy = nextallobj_str.split("|");
 for(var i=0 ; i<yy.length ; i++) clearoptions(eval("document.all."+yy[i])) ;
    var oBao = new ActiveXObject("Microsoft.XMLHTTP");
    oBao.open("POST","Server.asp?"+objname+"="+str,false);
    oBao.send();
    BuildSel(unescape(oBao.responseText),nextobj)
}

function BuildSel(str,sel)
{
    sel.options.length=0;
 if (str!=""){
  var Tarrstr = new Array();
  Tarrstr = str.split("%$#@")
  strid = Tarrstr[0]
  strname = Tarrstr[1]

  var arrstr1 = new Array();
  arrstr1 = strid.split(",");
  var arrstr2 = new Array();
  arrstr2 = strname.split(",");    //开始构建新的Select.
  for(var i=0;i<arrstr1.length;i++)
  {
   sel.options[sel.options.length]=new Option(arrstr2[i],arrstr1[i])
  }
 }
 
 var opobj =  new Option("--请选择--", "")
 sel.add(opobj,0)
 sel.selectedIndex = 0
}

function clearoptions(obj){
 for(var j = 0 ; j<=obj.length ; j++)obj.remove(0)
 var opobj =  new Option("--请选择--", "")
 obj.add(opobj,0)
 obj.selectedIndex = 0

}
</script>
<select name="sel1" onChange="GetResult(this.name,'sel2|sel3|sel4|sel5' ,this.value,document.all.sel2)">
 <option value="">请选择</option>
 <option value="1">福建省</option>
 <option value="2">湖北省</option>
 <option value="3">辽宁省</option>
<select>
<select name="sel2" onChange="GetResult(this.name,'sel3|sel4|sel5' ,this.value,document.all.sel3)" >
 <option value="">--请选择--</option>
</select>
<select name="sel3" onChange="GetResult(this.name, 'sel4|sel5',this.value,document.all.sel4)">
 <option value="">--请选择--</option>
</select>
<select name="sel4" onChange="GetResult(this.name,'sel5' , this.value,document.all.sel5)" >
 <option value="">--请选择--</option>
</select>
<select name="sel5">
 <option value="">--请选择--</option>
</select>
'**************************************************

server.asp

'**************************************************
<%
''''' show_backstr 函数说明 (举例:城市表(city)字段: id (PK), belong_id (所属省份的ID号) , city(城市名称))
''' 参数 colname_id  : 即为 id   (作为下一级菜单关联的ID值)
''  参数 colname_name : 即为 city   (注意此为字段名)
''  参数 table_name  : 即为 city   (注意此为表名)
''  参数 parentcol  : 即为 belong_id  (所属父类ID号字段名)
''  参数 belongparent : 即为 sel1   (Request过来的值)
''  返回值 escape加密后的值(形如将 id1,id+"2%$#@"+name1+name2 加密), 因此客户端得到此值后要解密.

dim conn
set conn=Server.CreateObject("ADODB.Connection")
sub OpenDB(sdbname)
    connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath(sdbname)
    conn.Open(connstr)
end sub

OpenDB("data.mdb")

'''传过来的四个菜单名字
dim sel1 , sel2 , sel3 , sel4
sel1 = Request("sel1")
sel2 = Request("sel2")
sel3 = Request("sel3")
sel4 = Request("sel4")

if sel1<>"" then call show_backstr("id","city","city","belong_id",sel1)
if sel2<>"" then call show_backstr("id","smallcity","smallcity","belong_id",sel2)
if sel3<>"" then call show_backstr("id","node","node","belong_id",sel3)
if sel4<>"" then call show_backstr("id","device","device","belong_id",sel4)

sub show_backstr( colname_id,colname_name, table_name , parentcol , belongparent )
 dim  arrResult
 if belongparent = ""  or not isNumeric(belongparent) then
  response.write escape("")
  exit sub
 end if
 sql = "select "& colname_id & "," & colname_name & " from " & table_name & " where " & parentcol & "="+belongparent+""

 set rs = Server.CreateObject("ADODB.Recordset")
 rs.Open sql,Conn,1,1

 do until rs.EOF
  arrResult_id = arrResult_id  & rs(colname_id)&","
  arrResult_name = arrResult_name  & rs(colname_name)&","
  rs.MoveNext()
 loop
 if arrResult_id  <> "" then arrResult_id = left(arrResult_id , len(arrResult_id)-1)
 if arrResult_name <> "" then
  arrResult_name = left(arrResult_name , len(arrResult_name)-1)
  Response.Write(escape(arrResult_id&"%$#@"&arrResult_name))
 end if
end sub

set conn = Nothing

%>
'**************************************************

data.mdb 数据库说明(ACCESS)

'**************************************************

' 数据库说明:
' 表1: province (省)
' 字段名  类型
' id   int
' province varchar(30)

' ---如下的每个表的belong_id都是关联上表的id---
' 表2: city (市)
' id  int
' belong_id int
' city  varchar(50)
'
' 表3: smallcity (县)
' id  int
' belong_id int
' smallcity varchat(50)
'
'
' 表4: node (节点 县下面的)
' id  int
' belong_id int
' smallcity varchat(50)
'
' 表5: device (节点下面的设备)
' id  int
' belong_id int
' device  varchat(50)

'**************************************************


作者:步步为赢:冰河  摘自:http://www.winsteps.net

Ajax技术实现无限级联动下拉框项目实战 Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它允许网页动态地读取服务器上的数据,并在用户界面上进行展示。通过Ajax,前端页面可以仅通过JavaScript异步地与后端服务器交换数据。用户在使用联动下拉框时,首先会与最顶层的下拉菜单进行交互。一旦用户选择了其中一个选项,页面就会异步地向服务器发出请求,获取与之相关联的次级数据。然后,次级下拉菜单会根据这些数据进行更新,展示新的选项列表供用户选择。 阅读详情

相关推荐

鸿蒙ArkTS实现无限级树形多选菜单:父子联动与状态同步方案

树形结构是组织架构、权限管理等业务场景中常见的数据模型,而无限级树形菜单的多选交互则涉及更为复杂的层级状态关系。传统扁平列表的选中逻辑无法直接复用,因为父节点与子节点的勾选状态需要动态联动:父节点选中时子树全选,子节点部分选中时父节点需呈现半选状态。这种联动本质上是递归状态同步问题,若处理不当,极易出现半选状态丢失或删除后子节点残留的隐患。引入独立状态映射表配合自顶向下的子树重置和自底向上的父级回算,可以高效维护全选、半选与未选三态流转。该方案在批量删除、编辑回显等真实需求中具有明确工程价值。本文基于鸿蒙A

weixin_31556767的博客 309

无刷新无限级菜单联动

功能:无刷新无限级菜单联动(原创:申请加精) Asp.Net(C#)+AjaxPro+MSSQL(需引用AjaxPro.2.dll) Infinite_Class.aspx C# code <!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlight

fangasp的专栏 438

联动菜单大全(含ajax,无限级联动菜单)

最近收集了很多联动菜单. 下拉联动菜单,有涉及到数据库的,有ajax的,有无限级ajax联动菜单. ....

Javascript + Asp +Access 三级联动列表框

作用说明:选择一级类别, 关联显示隶属二级类别, 再关联显示隶属于二级类别的三级类别 程序代码连接数据库表sqlsupercat= "select * from ctglossarysupercat"sqlsubcat= "Select a.*, b.*, c.* FROM (ctglossarysubcat AS a left JOIN ctglossarysubsubcat as c o

hize的专栏 1231

ASP四级联动下拉菜单 (XML+Access)

内容索引:ASP源码,其它类别,级联菜单,下拉菜单  ASP四级联动Selcet下拉菜单 ,结合XML+Access编写,动态读取数据库,使用时加载,减少服务器压力,运行截图如上所示。

多级联动菜单ASP代码

一款多级菜单联动的asp代码,包括三级、四级、多级等,比较好用,值得下载学习

ASP联动菜单,很老的问题了

就拿最常用的“省市下拉列表联动”作为例子吧!        在我们制作网站会员注册信息时,一般会涉及到填写自己所在省/市,如果用input或textarea做成填写形式不太理想。所以大部分网站都会选择联动下来列表形式,做起来也不算很复杂,同时看上去也很轻松。        具体做法如下:        1.设计数据库        我们选用Access数据库。首先,新建名为database1.md

boigel的专栏 2263

ASP实现无限级分类

ASP实现无限级分类

ajax实现无限级联动 针对select做得,其他可以仿照修改

//obj:主select菜单对象;//aspaddress:asp处理文件地址以及要传递的参数;//toobj:从select菜单对象;//firstxml:返回的第一个XML节点名;//secondxml:返回的第二个XML节点名;//toobjoptionlength:从select菜单对象初始option个数;//注意:在传递各个对象值得时候,尽量使用$(id),比

lsf5921的专栏 1306

ajax版本 asp无限级联动菜单程序源码.zip

【程序老媛出品,必属精品,亲测校正,质量保证】 资源名:ajax版本 asp无限级联动菜单程序源码.zip 资源类型:程序源代码 源码说明: 基于asp的ajax无限级联动菜单程序 可自定义添加联动菜单层数 包含完整代码和注释 很适合借鉴学习 适合人群:新手及有一定经验的开发人员

JS+CSS实现的简单折叠展开多级菜单效果

主要介绍了JS+CSS实现的简单折叠展开多级菜单效果,涉及JavaScript页面元素的遍历及动态操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下

Javascript 实现无刷新联动菜单(select)的方法

所谓联动菜单,就是后一个下拉框的选项是根据前一个下拉框被选中的值来决定的,一个典型的应用就是省市联动菜单了,市的下拉选项是根据你选了哪个省来决定的,类似的需求我们经常遇到,相信许多新手都被这个问题困扰过。其实,联动菜单的实现原理非常简单,本文详细介绍了联动菜单的实现方式,知道了原理,我们可以很容易地制作从XML、数据库加载的无限级联动菜单。-----------------------------

bibishou的专栏 908

Fluent基于低氧舱气体交换仿真(氮气与空气混合)

一、背景概述 模拟低氧舱充氮气和排除混合气体的过程,假设注入95%的氮气,舱内原有气体为空气,压力为标准大气压,温度为300K。观察气体注入过程中,舱内平均氮气和氧气浓度的变化。 二、Fluent设置 Setup 1、General type选择压力基 绝对速度 瞬态 重力勾选 2、Model 能量方程开启 组分运输开启,设置方法如下: 选择后OK,view就会变成Edit,点击Edit。然后再次点击Edit。 将组分中的非氮气氧气和空气的气体移除,右边选项需要将空气放在最后一位。 3、Materi

qq_35535616的博客 1万+

二级联动 三级联动 多级联动 无限级联动下拉列表或菜单专题

二级联动 三级联动 多级联动 无限级联动下拉列表或菜单专题 三维数组数据源  A - 请选择 - 北京市 天津市 河北省 山西省

柳永法的个人博客 1万+

【清风数学建模笔记】第十一讲:时间序列分析

【清风数学建模笔记】第十一讲:时间序列分析

manerzi的博客 833

国科大学习资料--高级软件工程-复习题选择题答案

国科大学习资料–高级软件工程(罗铁坚 魏峻 刘丹)-复习题选择题答案 ’‘

无名何许人的博客 1166

JS实现无刷新联动菜单(select)的方法

所谓联动菜单,就是后一个下拉框的选项是根据前一个下拉框被选中的值来决定的,一个典型的应用就是省市联动菜单了,市的下拉选项是根据你选了哪个省来决定的,类似的需求我们经常遇到,相信许多新手都被这个问题困扰过。 其实,联动菜单的实现原理非常简单,本文详细介绍了联动菜单的实现方式,知道了原理,我们可以很容易地制作从XML、数据库加载的无限级联动菜单。 联动菜单的实现方法: 1、确定数据格式 首先,

脑袋不好使 687

【YOLO系列】YOLOv12详解:模型结构、损失函数、训练方法及代码实现

本文提出YOLOv12,一种以注意力为中心的实时目标检测框架,通过创新性改进解决传统YOLO模型在精度与速度上的失衡问题。核心贡献包括:1)轻量混合注意力模块(LHA)结合通道与空间注意力,在不增加计算负担下提升特征提取能力;2)区域注意机制与R-ELAN网络优化特征聚合,显著改善小目标检测(AP_S提升8.3%);3)动态多光谱数据增强策略增强模型鲁棒性。实验表明,YOLOv12在COCO等基准上实现SOTA性能,同时保持2.1 TOPS/W的高能效比,适用于边缘设备部署。该工作为实时目标检测提供了新的注

一碗白开水一 1808

跟十八哥学php之—无限级联动下拉菜单,DropList无限级联动下拉列表框(菜单)...

最近用javascript写了一个可以创建无限级联动下拉列表框(菜单)的类,感觉功能还可以,可以更快、更方便的制作一个多级下拉列表。与大家分享一下,并欢迎您的建议。【效果】2、实现功能:(1)、无限制多级联动(2)、支持选择状态保存,使用Cookie(3)、支持初始值选定(4)、JS添加下拉列表和选择项3、使用说明:(1)、在页面中间添加javascript文件引用:(2)、初始化对象:var A...

weixin_34167684的博客 312

Dify 实战:使用 Firecrawl 插件高效爬取微信公众号文章

本文介绍了如何利用Dify平台和Firecrawl插件构建微信公众号文章自动化采集系统。Dify作为开源LLM应用开发平台,结合Firecrawl的智能网页爬取能力,可轻松实现文章爬取、清洗和结构化存储。文章详细讲解了环境部署、插件安装以及工作流创建过程,通过可视化节点操作即可完成从URL输入到Markdown格式输出的全流程。该方案无需复杂代码,能有效解决反爬、动态渲染等问题,适用于知识库构建、模型训练等场景,显著提升开发效率。

SmartSi 1826

uni-app开发-第6篇:uni-app 样式与主题

在 uni-app 开发中,样式与主题的管理是关键部分。样式分为全局样式和局部样式,全局样式在 App.vue 中定义,适用于整个应用,而局部样式在单个 .vue 文件中定义,仅对当前页面生效。局部样式优先级高于全局样式,内联样式优先级最高。样式属性如 font-family 和 color 可被子元素继承。要覆盖全局样式,可在局部样式中重新定义相同规则。主题切换通过 CSS 变量和类名实现,动态切换主题可通过修改元素的类名来完成。例如,定义浅色和深色主题,并通过按钮点击切换主题样式。这些方法帮助开发者灵活

无 369

javascript 无刷新select联动菜单

本文详细介绍了联动菜单的实现方式,知道了原理,我们可以很容易地制作从XML、数据库加载的无限级联动菜单 联动菜单的实现方法: 1.确定数据格式: 首先,我们介绍一下创建 Option 的语法: var newOption = new Option(optionText, optionvalue); 根据上面的语法,我们知道 select 选项分 optionText 和 optionva

sinat_14932597的专栏 781

QGraphicsView通过鼠标操作来绘制图元

在Visio和MindManager等类似的图元操作软件中,很多时候我们会通过鼠标操作来添加自定义的图元。这里就介绍一下如何在QT的图形视图框架中通过鼠标绘制来添加图元。

yang1fei2的博客 3576
上一篇: 连接缓冲池提高数据库性能
下一篇: 二十八条改善 ASP 性能和外观的技巧
RAINMAN_NET
博客等级 码龄22年 2粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值