jquery 相同的name值就拼接传到后台(紧急求助)

键盘声啪啪的响 2013-10-12 10:44:05
页面

<tr>
<td class="td1">用餐状态2</td>
<td class="td3" colspan="3"><s:checkboxlist list="diningType" listKey="key" listValue="value" value="%{callTranslationVO.tdningstatus}" name="callTranslationVO.tdningstatus"></s:checkboxlist></td>
<td class="td3" colspan="3"><s:checkboxlist list="diningType" listKey="key" listValue="value" value="%{callTranslationVO.documentsnum}" name="callTranslationVO.documentsnum"></s:checkboxlist></td>
</tr>

例如上面的页面
我想通过jquery循环得到这2个checkbox数组(页面中不单单这2个checkbox数组!可以有很多个!但是name名字不同)
然后根据相同的name值来拼接选中的传递到后台
(前提是我不能直接在jquery指定$('input[name="aihao"]:checked').each(function()name的值等于aihao,而是想通过参数的形式来获取选中的值)我现在的疑问是不知道如何判断name的值是否相同!
...全文
812 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
呼啸 2013-10-14
  • 打赏
  • 举报
回复
不用拼接把,后台定义一个callTranslationVO。然后用.取值
  • 打赏
  • 举报
回复
引用 21 楼 u011222719 的回复:
可以在Action定义一个int[] 或者String[]接收页面相同name的值,然后遍历
以下是我解决的代码!现在贡献出来!(写得不好!请勿喷哦!)

$.fn.extend({
		// 增加一个隐藏的值
		addHidden: function (name, value) {
			if ($(this).length > 0) {
				var hidden = "<input type='hidden' name='" + name + "' value='" + value + "' />";
				$(this).append(hidden);
			}
		},
		addHiddenMap: function(map) {
			if (map) {
				for (value in map) {
					var hidden="";
					var m=map[value];
					if("a"==$.trim(value)){
						for(value1 in m){
							hidden = "<input type='hidden' name='" + value1 + "' value='" + m[value1] + "' />";
							$(this).append(hidden);
						}
					}
					if("b"==$.trim(value)){
						for(value2 in m){
							hidden = "<div style=\"display:none;\"> <input type='checkbox' checked='checked' name='" + value2.substring(0,value2.length-1) + "' value='" + m[value2] + " ' /></div>";
							$(this).append(hidden);
						}
					}
				}
			}
		}
	});
	
	$.extend({
		// 在当前页面中打开一个字窗口,返回子窗口传值
		openSubWindow: function (src, height, width) {
			var left=(screen.width-width)/2;
			var top=(screen.height-height)/2;
			var sFeatures = "dialogHeight:" + height + "px;dialogWidth:" + width + "px;dialogLeft:"+left+"px;dialogTop:"+top+"px;resizable:no;help:no;status:no;scroll:yes;";
			var result = window.showModalDialog(src, window, sFeatures);
			return result;			
		},
		openTab: function(src) {
		},
		createSearchMap: function(obj, window) {
			var form = $(obj).parents('form:first');
			if (form && form.length > 0) {
				var map = new Object();
				var map1 = new Object();
				var map2 = new Object();
				
				// 文本框
				$(form).find('input:text').each(function(i) {
					if ($(this).attr('name') && $(this).attr('name').length > 0 && $(this).val() && $(this).val().length > 0) {
						map1[$(this).attr('name')] = $(this).val();
					}
				});
				// 隐藏文本框
				$(form).find('input:hidden').each(function(i) {
					if ($(this).attr('name') && $(this).attr('name').length > 0 && $(this).val() && $(this).val().length > 0) {
						map1[$(this).attr('name')] = $(this).val();
					}
				});
				// 单选下拉框
				$(form).find('select').each(function(b) {
					if (!$(this).prop('multiple') && $(this).attr('name') && $(this).attr('name').length > 0 && $(this).val() && $(this).val().length > 0) {
						map1[$(this).attr('name')] = $(this).val();
					}
				}); 
				$(form).find('textarea').each(function(b) {
					if ($(this).attr('name') && $(this).attr('name').length > 0 && $(this).val() && $(this).val().length > 0) {
						map1[$(this).attr('name')] = $(this).val();
					}
				});
				$(form).find(':checkbox:checked').each(function(b) {
					map2[$(this).attr('name')+b]=$(this).val();
				});
				map['a']=map1;
				map['b']=map2;
				window.returnValue = map;
				closeWindow(obj);
			}
			return false;
		},


  • 打赏
  • 举报
回复
引用 21 楼 u011222719 的回复:
可以在Action定义一个int[] 或者String[]接收页面相同name的值,然后遍历
呵呵!你的在from当前页面提交的!我的是跨域传值的!现在解决了!谢谢啦
  • 打赏
  • 举报
回复
引用 25 楼 howlaa 的回复:
不用拼接把,后台定义一个callTranslationVO。然后用.取值
恩!现在跨域传值到第2个页面!然后通过这个页面提交就可以了!不用先拼接!
zswiori 2013-10-12
  • 打赏
  • 举报
回复
那你看这种思路行不行的通: 创建两个数组:boxNames,boxValues,一个用来放checkbox的name,一个放value(拼接起来的),它们的下标一一对应。 通过jquery获取你form里所有的checkbox,然后依次循环,获得checkbox的name和value,然后将所有的name放到一个数组中(不重复的),比如:boxNames[name1,name2,name3...],也就是说,每拿到一个checkbox,就获取它的名字,然后到boxNames里去看,里面有没有这个名字了,判断结果: 1、没有,帮当前checkbox的名字放到boxNames中,把值放到boxValues中 2、有,看一下当前checkbox的名字在boxNames中的位置,比如name2的位置是1,则boxValues[1]就是name2所对应的值,拿出来,接上分号和当前checkbox的值后重新赋值,下标仍然是1不变。 这样你循环完所有的checkbox就能获取到所有的name和value了。 简单的说就是做一个类似map一样的东西,{name1:'value1_1;value1_2;value1_3',name2:'value2_1;value2_2;vaue2_3'......}
枫叶之魂 2013-10-12
  • 打赏
  • 举报
回复
能不使用ongl表达式的时候就不要使用,浪费性能, 还有就是想这些简单的js代码就不要使用Jquery 代码,不好调试 ,就是给自己找麻烦。 你说的问题很简单 var a = document.getElementsByTagName(""); 这样你就得到了所有的控件,循环这些element 使用a.name就可以得到name属性 ,这样你就可以得到判断name是否相同了。
  • 打赏
  • 举报
回复
引用 13 楼 rui888 的回复:
后台可以自动获取吧,不同的name 数组。你定义对应的name 然后加上get/set 方法
这个是直接当前页面from表单提交的形式!我的是跨域的!也就是说当前获取的值要传到另外一个页面!然后再通过那个页面来提交东西
tony4geek 2013-10-12
  • 打赏
  • 举报
回复
后台可以自动获取吧,不同的name 数组。你定义对应的name 然后加上get/set 方法
  • 打赏
  • 举报
回复
引用 9 楼 zswiori 的回复:
[quote=引用 7 楼 li897893127 的回复:] 我的意思就是from 里面有很多个checkbox 然后当选中的时候相同的name的就拼接在一起(例如:01,02,03)再把拼接的传到后台去
那那些checkbox的name是已知的还是未知的变量?[/quote] 是未知的变量的!要是固定的话我就不问了!也就是说 我想弄成插件形式的可以通用
  • 打赏
  • 举报
回复
引用 10 楼 zswiori 的回复:
[quote=引用 8 楼 li897893127 的回复:] [quote=引用 4 楼 zswiori 的回复:] 直接在form中提交给后台不就行了吗?为什么要通过jquery?
为了实现多选checkbox 因为name是相同的!所有在台拿到的就应该是一个拼接的![/quote] 如果只是想这么实现,那你就没有必要通过jquery,直接提交给后台,后台获取到一个的每一个name所对应的值都是一个数组或list,如果你想变成字符串,在后台迭代出来拼接就是了[/quote] 我知道from那种直接提交给后台是可以的!但是我现在需求必须的用这种去实现!因为我获取的拼接数据还要弄成隐藏值传到另外一个页面的
zswiori 2013-10-12
  • 打赏
  • 举报
回复
引用 8 楼 li897893127 的回复:
[quote=引用 4 楼 zswiori 的回复:] 直接在form中提交给后台不就行了吗?为什么要通过jquery?
为了实现多选checkbox 因为name是相同的!所有在台拿到的就应该是一个拼接的![/quote] 如果只是想这么实现,那你就没有必要通过jquery,直接提交给后台,后台获取到一个的每一个name所对应的值都是一个数组或list,如果你想变成字符串,在后台迭代出来拼接就是了
zswiori 2013-10-12
  • 打赏
  • 举报
回复
引用 7 楼 li897893127 的回复:
我的意思就是from 里面有很多个checkbox 然后当选中的时候相同的name的就拼接在一起(例如:01,02,03)再把拼接的传到后台去
那那些checkbox的name是已知的还是未知的变量?
  • 打赏
  • 举报
回复
引用 4 楼 zswiori 的回复:
直接在form中提交给后台不就行了吗?为什么要通过jquery?
为了实现多选checkbox 因为name是相同的!所有在台拿到的就应该是一个拼接的!
  • 打赏
  • 举报
回复
引用 5 楼 cbxjj 的回复:
没看懂你意思 试试这个$("form").serialize()
我的意思就是from 里面有很多个checkbox 然后当选中的时候相同的name的就拼接在一起(例如:01,02,03)再把拼接的传到后台去
C-J 2013-10-12
  • 打赏
  • 举报
回复
可以在Action定义一个int[] 或者String[]接收页面相同name的值,然后遍历
  • 打赏
  • 举报
回复
引用 4 楼 zswiori 的回复:
直接在form中提交给后台不就行了吗?为什么要通过jquery?
业务需求必须的这样做!
剑神一笑 2013-10-12
  • 打赏
  • 举报
回复
没看懂你意思 试试这个$("form").serialize()
zswiori 2013-10-12
  • 打赏
  • 举报
回复
直接在form中提交给后台不就行了吗?为什么要通过jquery?
我是小黄呀 2013-10-12
  • 打赏
  • 举报
回复
我是初学者哦
  • 打赏
  • 举报
回复
大神何在啊
加载更多回复(5)
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 Altium Designer 18是一款功能丰富的电子设计自动化工具,其集成了电路原理图绘制、PCB布局规划、三维视图展示、电路仿真分析以及生产文件生成等多项核心功能,为电子工程师们提供了一个全面的硬件设计解决方案。该软件的官方中文指导材料系统地阐述了从项目初始阶段到最终完成的全过程操作方法。 在“AD18 官方中文指导材料”中,使用者可以掌握以下核心内容要点: 1. **系统配置与界面认知**:熟悉Altium Designer 18的工作平台,涵盖菜单选项、工具栏配置、工作区域安排,以及个性化工作界面的设定方法。 2. **项目创建流程**:掌握如何建立新的项目工程,包括工程参数配置、项目模板选取,以及项目文件的添加操作。 3. **电路图绘制技术**:学习电路原理图的绘制流程,包括元件库的维护管理、元件放置技巧、连接线路绘制、属性编辑操作,以及网络表的自动生成方法。 4. **元件库构建与管理**:了解如何建立自定义元件库,执行元件的导入与导出任务,以及利用Altium Designer自带的元件资源库。 5. **PCB布局设计方法**:掌握PCB设计的基本准则,如元件布局策略、布线技巧、层叠结构调整、布线规则优化,以及冲突检测与短路处理技术。 6. **设计规范与约束条件**:理解设定设计规范和电气约束条件的关键性,包括间距参数设定、焊盘尺寸规格、过孔尺寸要求等,以及运用规则检查进行设计验证的流程。 7. **三维模型整合应用**:学习如何将三维模型与PCB设计内容相结合,以实现更为直观的机械配合验证。 8. **电路性能仿真技术**:掌握使用Altium Des...
源码链接: https://pan.quark.cn/s/a4b39357ea24 ### 接口测试知识要点说明 #### 一、接口测试的定义及分类 1. **概念阐释**: - 接口测试作为软件测试的关键环节,主要对系统之间的交互点进行验证。 - 它旨在核实接口的正确性、稳定性和功能性,保障各个系统组件能够依照预期执行交互操作。 2. **实施情境**: - 适用于多系统联合开发的环境。 - 适用于包含多个子系统的复杂应用系统开发过程。 3. **适用范围**: - 为其他系统提供支持的底层基础架构系统。 - 负责协调中心服务的系统架构。 4. **分类标准**: - **模块接口测试**:通常作为单元测试的一部分,适用于独立构建的功能模块。 - **Web接口测试**: - **服务端接口测试**:针对客户端与服务器端之间的接口进行验证。 - **外部接口测试**:对第三方提供的接口进行测试,例如支付平台提供的授权登录接口。 5. **测试角度**: - **接口功能验证**:核实接口功能是否满足预期要求。 - **接口性能评估**:衡量接口的处理能力及响应时间。 - **接口稳定性考察**:检测接口在长时间运行中的表现情况。 - **接口安全检测**:确保接口能够抵御非法访问或数据篡改。 6. **测试手法**: - **参数细致测试**:深入测试接口的输入参数和输出结果。 - **场景模拟测试**:依据实际业务场景进行测试验证。 #### 二、接口测试的详细流程 1. **测试规划**: - 明确测试范围、目标及所需资源。 - 规划测试策略,选择适宜的工具和技术手段。 2. **测试用例设计**: - 依据需求文档和接口规格文档设计测试用例。 - 覆...

81,111

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧