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的值是否相同!
...全文
740 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)

81,092

社区成员

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

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