jQuery dialog form 提交 后台不能取值的解决办法

十一郎的IT 2013-10-29

1.众所周知,被jQuery dialog处理后,相应的模块是加到body上的,不在form里,提交form的时候,后台获取不到数据。

2.解决方法:

   利用隐藏变量,即:在form里定义隐藏变量,dialog响应事件后,为隐藏变量赋值,这样form提交,可将隐藏变量带到后台。

3.例:

<html>
 <head>
  <script type="text/javascript" src="jquery-ui-1.10.3.custom/js/jquery-1.9.1.js"></script>
  <script type="text/javascript" src="jquery-ui-1.10.3.custom/js/jquery-ui-1.10.3.custom.js"></script>
  <link rel="stylesheet" type="text/css" href="jquery-ui-1.10.3.custom/css/ui-lightness/jquery-ui-1.10.3.custom.css"/>
 </head>
 <body>
<script>
 $(function(){
	$('#dialogDiv').dialog({
		modal:true,
		autoOpen:false,
		width: 300,
		height:216,
		resizable:false,
		position:"center",
		buttons: {
			'确定': function() {
				$('#id').val($('#dialogId').val());
				$('#name').val($('#dialogName').val());
				$(this).dialog('close');
			},
			'取消': function() {
				$(this).dialog('close');
			}
		}
	});
	$.openDialog = function() {
		$('#dialogDiv').dialog('open');
	}
	$.show = function() {
		alert('form中id的值:' + $('#mainForm #id').val());
		alert('form中name的值:' + $('#mainForm #name').val());
		alert('form提交后,后台可获取id、name的值');
	}
 })
</script>
<form id="mainForm">
	<input type="hidden" id="id"/>
	<input type="hidden" id="name"/>
	<input type="button" value="打开对话框" onclick="$.openDialog()"/>
	<input type="button" value="查看" onclick="$.show()"/>
	<div id="dialogDiv" title="test">
		<input type="text" id="dialogId"/><br/>
		<input type="text" id="dialogName"/>
	</div>
</form>
 </body>
</html>

 4.问:如果内容很多,要定义多个隐藏变量?

    答:那不适合用dialog

相关推荐