jQuery dialog form提出バックグラウンドで値を取ることができない解決方法

2348 ワード

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には向いていません