2011-08-07 13 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> 

は、[OK]をモーダルフォームコード(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

あるので、あなたは、フォームを送信しますがで滞在したいです同じページをページリロードせずに閉じ、モーダルdivを閉じます。これには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呼び出しが、そのプロセスが成功したか、あなたの投稿に応じて取得したい他のデータが含まれています。また、MVCが何であるかを見てください。

+0

こんにちはSergi Ramon、ありがとう。それは働く。しかし、提出した後は、モーダルフォームは閉じないでください。ページもfrmbts.phpにリダイレクトされます。送信後にfrmbtsにリダイレクトせずにモーダルフォームを閉じる方法は?私はjQuery(this).dialog( "close")を配置しましたが、動作しません。 – satria

+0

これはまったく別の解決策です。これにはajaxを使用する必要があります。答えを変更します。 –

+0

私は混乱して申し訳ありません。実際に私は提出した後にモーダルフォームを終了するが、私がしたくないfrmbts.phpにindex.phpリダイレクトすると言う。 – satria

0

右のように、frmbts.phpからモーダルポップアップウィンドウにロードしていますか?私はjQueryで送信された入力を確認して、クリックしたかどうかを確認し、代わりに以下のようなものを呼び出します。私はあなたの新しいフォームにID値 "frmbtsform"を与えました。これを変更して、テストしてください!

+0

こんにちはJake Rocheleau、あなたの答えはSergiRamónの答えと同じだと思います。それは働く。次の質問は提出後にモーダルフォームを閉じることではありません。 frmbts.phpにリダイレクトさえします。 – satria

+0

jQueryダイアログ()メソッドを使って2番目のボタンを追加することもできます。[この素晴らしい投稿](http://www.jensbits.com/2009/08/10/modal-confirmation-dialog-on-form -submit-javascript-jquery-ui-and-thickbox-varieties /)はコードをうまく説明します。私はここにそれをコピーしますが、限られた部屋しかありません。 セクション "jQuery UI"を検索するだけで、彼女のコードはいくつかの段落になります。あなたは私がどこにいるのかを見なければなりません。それ以外は、ちょっと動かしてみてください。操作の他の場所でダイアログ(「閉じる」)をクリックします。 – Jake

+0

私は混乱して申し訳ありません。実際に私は提出した後にモーダルフォームを終了するが、私がしたくないfrmbts.phpにindex.phpリダイレクトすると言う。 – satria

関連する問題