2011-08-07 41 views
1

我有一个窗体来显示网格数据(index.php)和自定义模态窗体(frmbts.php)来编辑网格中的数据。我不知道如何提交/张贴模态表单中的数据,然后在提交后关闭模态表单,如jqgrid的表单添加/编辑。如果我将提交按钮放入frmbts.php中,我可以提交数据。但是我不想实现(提交后无法关闭模式表单)。如何模仿提交按钮从自定义模式形式

这里是网格的代码(的index.php)

jQuery(document).ready(function(){ ... 
     jQuery("#list").jqGrid('navGrid','#page',{edit:true,add:true,del:true,search:true,refresh:true,position:'right', 
      editfunc: function(id){ 
       jQuery('#frmbts').load('frmbts.php?id='+id); 
       jQuery('#frmbts').dialog({width:670,height:550,modal:true,title:'Edit Data', 
       buttons: { "Cancel": function() { 
        jQuery(this).dialog("close"); 
       }, "Save": function() { <-- i want use this to submit data 
        //code to submit the form then close the form 
        jQuery(this).dialog("close"); 
       } }, 
       }); 
      }}, ... 
    <div id="content"> 
     <form id="frm" method="post" action="csvExport.php"> 
      <div id="frmbts"></div> 
      <table id="list"></table> 
      <div id="page"></div> 
      <input id="csvBuffer" name="csvBuffer" type="hidden" value=""> 
      <input id="typeinfo" name="typeinfo" type="hidden" value=""> 
     </form> 
    </div> 

模式窗体代码(frmbts.php)

<?php 

    $id = $_REQUEST['id']; 

    if(isset($_POST['submit'])) 
    { 
    //update data 
    } 
?> 

<form name="frmsubmit" method="post" action="frmbts.php"> 
    <table>...</table> 
    <input type="button" name="cancel" value="cancel">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <input type="submit" name="save" id="save" value="Save"> <--- just test. not the way i want 
</form> 

回答

1

好了,你想提交表单,但留在同一页面,没有页面重新加载,并关闭模态分区。你需要为此使用ajax。

首先,更改所有名的为ID在你的表格,然后改变你对一个普通按钮提交按钮,使用此:

$.post('frmbts.php', { 
    cancel: $('#cancel').value(), 
    save: $('#save').value() 
}, function(response) { 
    // close your modal div here. 
}); 

什么,我不明白的是你如何显示您的形式,因为我发现它是在frmbts.php中定义的,所以这样做有点奇怪。想想用一个新的PHP来处理POST数据,并学习一下JSONAJAX的意思,jQuery有很多功能,它非常简单和强大。

因此,正确的实现是将您的POST处理代码放入一个新的PHP中,并使该PHP回显一些JSON响应,因此您的$ .post调用可以接收JSON响应以及有关该过程是否为成功的,或任何其他数据,你想获得回应你的帖子。也看看MVC是什么。

+0

嗨Sergi拉蒙,谢谢。这行得通。但在提交模态表单后不要关闭。即使页面重定向到frmbts.php。提交后如何关闭模式表单而不重定向到frmbts?我已经把jQuery(this).dialog(“close”),但它不工作。 – satria

+0

这是一个完全不同的解决方案,你需要为此使用ajax,我会改变答案。 –

+0

对不起,我感到困惑。实际上我想说的是模式表单在提交后关闭,但index.php重定向到frmbts.php,我不想。 – satria

0

正确,你正在从frmbts.php加载到你的模态弹出窗口?我会在jQuery中给提交输入一些东西,以检查它是否被点击,而不是像下面那样调用类似的东西。注意我给你的新表单ID值“frmbtsform”,改变这一点,并确保测试!

jQuery("#save").click(function(ev){ 
    ev.preventDefault(); 
    jQuery("#frmbtsform").submit(); 
}); 
+0

嗨Jake Rocheleau,我想你的答案和SergiRamón的答案是一样的。这行得通。但下一个问题是模式表单在提交后不关闭。即使它重定向到frmbts.php。 – satria

+0

看来你可以通过jQuery对话框()方法添加第二个按钮.. [这篇文章很棒](http://www.jensbits.com/2009/08/10/modal-confirmation-dialog-on-form -submit-javascript-jquery-ui-and-thickbox-varieties /)很好地概括了代码。我会复制它在这里,但有限的空间... 只是搜索“jQuery UI”部分,她的代码是几段落。你应该看看我在哪里。除此之外,请尝试移动。对话框(“关闭”)在操作的其他地方。 – Jake

+0

对不起,我感到困惑。实际上我想说的是模式表单在提交后关闭,但index.php重定向到frmbts.php,我不想。 – satria