2011-10-20 90 views
0

我有非常大的表单(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 &nbsp;&nbsp;&nbsp;<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> 

回答

1

你吃过看看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> 
+0

谢谢!这个插件将会非常方便。表单现在正在被正确提交,所以这很好,但是我不能让对话框退出,然后在浏览器窗口中加载changeuserjudgeprocess.php。我尝试使用返回false;没有任何成功。有任何想法吗? –

+0

您在表单处理脚本中没有重定向,是吗?你可以发布你设置插件的代码吗? – centralscru

相关问题