JQuery UI对话框 - 从对话框中的另一个页面加载表单(在提交时)在同一个对话框中打开处理页面
问题描述:
我有非常大的表单(changeuserjudge.php),我已经从单独的页面加载到对话框中并且右键单击现在,当提交表单时,提交页面将在浏览器窗口中打开(不在打开的对话框中)。我试图找出如何在按下提交按钮(并提交POST变量)后将处理表单(changeuserjudgeprocess.php)加载到同一个对话框中。我试图避免在同一页面上进行处理。JQuery UI对话框 - 从对话框中的另一个页面加载表单(在提交时)在同一个对话框中打开处理页面
对话脚本:
<script type="text/javascript">
$(document).ready(function(){
$('#click').click(function(){
$("#test").load('changeuserjudge.php?user=tim').dialog({modal:true});
$("#test").dialog("option", "minWidth", 330);
$("#test").dialog("option", "position", 'top');
});
});
</script>
(测试仅仅是一个空白页上一个div)
提交表单:
<body>
<div id="judgesMenu">
<form action="changeuserjudgeprocess.php" method="POST">
<?php
$selectedJudges = array();
if(isset($_GET['user'])){
echo '<center><b>User: '.ucfirst($_GET['user']).'</b></center><br />';
}
echo '<center><input type="checkbox" id="checkall">Select All <input type="checkbox" id="checknone">Select None</center><br />';
$listUserJudges = getUserJudges(userNametoID($_GET['user']));
$arr = array();
$num = count($listUserJudges);
if ($num>1){
foreach ($listUserJudges as $x){
array_push($arr, judgeIDtoName($x));
}
}
else {
array_push($arr, $listUserJudges);
}
echo '<ul>';
$list = getActiveJudges();
foreach ($list as $x){
$found = 0;
if (count($arr)>1){
foreach ($arr as $y){
if ($x == $y){
$found = 1;
break;
}
}
}
else {
if (judgeNametoID($x) == $arr[0]){
$found = 1;
}
}
if ($found==1){
echo '<li>';
array_push($selectedJudges, judgeNametoID($x));
echo '<input type="checkbox" checked="checked" name="checkbox[]" value="'.$x.'" />'.$x.'<br/>';
echo '</li>';
}
else {
echo '<li>';
echo '<input type="checkbox" name="checkbox[]" value="'.$x.'" />'.$x.'<br/>';
echo '</li>';
}
}
echo '</ul>';
$_SESSION['selectedJudges']=$selectedJudges;
?>
<input type="hidden" name="user" value="<?php echo userNametoID($_GET['user']); ?>" />
<br/>
<p><center><input type="Submit" value="Save Changes" id="sub"/></center></p></div>
</form></body>
答
你吃过看看jQuery的形式插件http://jquery.malsup.com/form/ ?这是一种非常简单的方式来劫持表单发布并通过ajax提交,而不是直接发送到表单url,正如你发现的(如果我正确理解的话)会丢失你的对话框。这是一小段代码。接下来要考虑的是如何对无效的表单提交做出反应。让我知道,如果我在正确的路线,我会详细说明。
<script type="text/javascript">
$(function(){
$("#judgeForm").ajaxForm({
success: function(){
// add some code in here to react to the success of your form post
}
});
});
</script>
<body>
<div id="judgesMenu">
<form action="changeuserjudgeprocess.php" method="POST" id="judgeForm">
</form>
</div>
谢谢!这个插件将会非常方便。表单现在正在被正确提交,所以这很好,但是我不能让对话框退出,然后在浏览器窗口中加载changeuserjudgeprocess.php。我尝试使用返回false;没有任何成功。有任何想法吗? –
您在表单处理脚本中没有重定向,是吗?你可以发布你设置插件的代码吗? – centralscru