最开始进入项目的时候,装了环境装半天,真实茫然。一脸的颓废,好几天没怎么睡觉了。心里急的找不到东南西北,开始来时,被告知都是有很多实习生。但是当我到的时候,他们谈的做的都让我很是郁闷。不懂啊···还好下午曹哥跟我说了些宽慰的话。被告知他们都是工作好几年了,这下我才有些许的安心,当然我知道我现在差好多,心里真的很急啊。情感生活就不说了,更是郁闷。
进入正题:leader说让我帮他弄一下级联,菜单中工厂里边有个工厂编号主键是werk,反冲库存地点里边是复合主键(lgort,werk)显示的是描述。复合主键中一个就是工厂的主键werk。当用户选择工厂时候,反冲库存地点就跟着变化(复合主键中的一个工厂的主键)。其实这看起来很简单。当时我就像既然是级联,用ajax好像是最流行的吧,但是好像我不太会哦~~~无奈之下,我只能选择js。当然他们是再进入页面之前把这两个表都初始化好了,接下来就剩下过滤了。具体实现方法如下:
首先,在选择工厂的<select>标签中onchange()事件,来监控工厂变化的时候我来进行过滤。<select name="WERKS" onchange="changeSelect(this)">。this传的是当前的value。还需要一点就是你要设定要改变标签的name,这里我设成<select name = "dest"></>接下来,就开始js了这个也very easy。我用的是html的DOM来实现的,(扯句闲话,新手其实真该看看DOM这样对你理解页面的节点结构很有帮助,对你写js也非常有用)。
实现代码如下:
<script type="javascript/text">
function changeSelect(werk){
//werk是你传进来的参数,这里也就是<select>标签中的this这个值已经在上面解释过了
var rowObj = werk.parentNode;//首先得到你点击的行对象,也就是你在哪行点击的。
var trArr = rowObj.parentNode.children;//得到所有行组成一个数组
var rowNo;//存放点击的行的行号
for(var trNo = 0;trNo < trArr.length;trNo++){//循环找出你点的是哪行
if(trObj == trObj.parentNode.children[trNo]){//判断是否是点击的那一行
rowNo = parseInt(trNo-1);//因为里边有表头信息所以要-1
}
}
//至此我们知道对哪一行进行操作了,剩下就过滤吧···
var optArr = document.getElementByName("dest");
//dest就是要改变的select的name
// 当然这是一个数组,因为要循环的话可能有多<select name ="dest">
opt = optArr[rowNo];//获得当前的行对象
var opt.length = 1;//每次都给它清空等于1是因为默认值是"请选择"必须有一条呀
<s:iterator value="#request.T001l">
//T001l这个表就是反冲库存表,表名不是我取的,SAP就叫这名字。
if(${id.werk} == werk.value){
//反冲库存地点是复合主键,有个ID对象里边存两个值,如果工厂主键和反冲库存主键的
//werk相等那么就放在opt对象中 ,werk和lgort这两个组成的复合主键
var optObj = document.CreateElement("OPTION");//创建一个OPTION对象
//关于option对象个人理解:存放value和Index的对象。具体解释查查DOM吧
optObj.value = ('${id.lgort};${id.werk}');//option的value=这个值
optObj.text = ($.trim('lgobe'));//$.trim()方法是jQuery的就是去空格的。
//text就是我们option中的label现实给用户选择的。
opt.add(optObj);//查到相等的就直接放在opt数组中
}
</s:iterator>
//至此也就结束了我们简单的级联.比较简单的级联下一篇文章将介绍jQuery时间级联相当
//简单
</script>
待续..........
分享到:
相关推荐
在实现无刷新级联菜单时,通常会用到两种关键技术:**Jquery** 和 **Ajax**。**Jquery** 是一个流行的JavaScript库,简化了DOM操作、事件处理和动画效果,使得在前端构建动态交互变得简单。**Ajax**(Asynchronous ...
在本文中,我们将深入探讨如何使用jQuery库进行AJAX(异步JavaScript和XML)开发,通过实际案例来学习包括级联菜单、谷歌式搜索提示和可编辑表格在内的常见功能。这些功能都允许用户在不刷新整个页面的情况下与网页...
这些技术结合在一起,可以实现动态、高效的用户界面,例如级联菜单。 级联菜单通常指的是一个下拉菜单,其中的选项根据用户选择的前一个选项动态加载。这种功能在很多Web应用中都有应用,如地区选择、部门分类等。...
本项目名为"最简单的省市区级联(带数据库)",提供了一个简单易懂的解决方案,适合初学者学习和使用。该项目采用SSH(Spring、Struts2和Hibernate)框架,结合jQuery和Ajax技术,并使用MySQL作为后台数据库,包含了...
程序描述:本章将使用Ajax技术实现无刷新即可浏览RSS的阅读器。添加一个RSS地址时,自动保存到数据库。打开阅读RSS时,自动获取最新的RSS内容,而无需刷新页面。 /RSSReader.jsp RSS阅读器 /rss.js ...
实例066 多级级联菜单 110 实例067 可以输入文字的下拉菜单 111 实例068 根据下拉菜单的值显示不同控件 112 实例069 分级下拉列表 113 2.3 单选按钮组 114 实例070 不提交表单获取单选按钮的值 114 实例071 选中单选...
3.1.3 最简单的Ajax示例 第4章 DOM基础及高级DOM技术 柳州龙腾.xml XML-无限数据传输 Test4Document.htm 访问DOM对象的相关节点 Test4Document.htm 检测节点类型 Test4Attribute.htm 节点的属性解析 get&...
3.1.3 最简单的Ajax示例 第4章 DOM基础及高级DOM技术 柳州龙腾.xml XML-无限数据传输 Test4Document.htm 访问DOM对象的相关节点 Test4Document.htm 检测节点类型 Test4Attribute.htm 节点的属性解析 get&...
- **例子2:按需取数据—级联菜单**:根据用户的选择动态加载相关的下拉菜单选项。 - **例子3:读取外部数据**:无需刷新页面即可获取和显示来自其他网站的数据。 #### 六、AJAX的缺陷 - **搜索引擎优化(SEO)...
- **级联菜单**:根据用户的选择动态加载相关选项。 #### 7.4 文档对象模型(DOM) DOM是一种标准的API,用于表示HTML文档的结构。它可以被看作是一棵树,每个HTML元素都是树上的一个节点。DOM允许开发者动态地...
**B、级联菜单**: 用户选择某个选项时,通过AJAX请求获取下一级菜单,并动态添加到页面中。 ##### 7.4 文档对象模型(DOM) DOM是一种处理HTML或XML文档的标准方法,可以动态地访问和修改文档内容。 - **7.4.1 ...
5.1 最简单的用户输入自动完成 5.2 使用远程数据源的自动完成 5.3 带缓存的自动完成 5.4 带滚动条的自动完成 5.5 Combobox风格的自动完成 5.6 读取XML数据的自动完成 5.7 多维数据的自动完成 第6章 jQuery实现拖放...
- **级联菜单**:当用户选择某个选项时,异步加载与之相关的子选项列表,提高交互效率。 - **读取外部数据**:从服务器或其他数据源实时获取信息,如天气预报、股票价格等。 #### 六、文档对象模型(DOM) DOM是...
- **按需取数据**:如级联菜单,根据用户的前一步选择动态加载后续选项。 - **读取外部数据**:例如,从第三方API获取数据并在页面上显示。 #### 二、发送请求及处理响应 ##### 2.1 GET请求 GET请求是最常见的...
5. CascadingDropDown:此控件实现了级联下拉列表的功能,即一个下拉列表的选择会影响另一个下拉列表的选项。 6. ModalPopupExtender:它能创建弹出式窗口效果,使得弹窗在页面上以模态方式显示,同时不影响页面...