2012-01-23 1 views
1

Jquery UIに関する質問があります。Jquery UI:submitメソッドで特定のフォームを送信

私が行ったこと:/私は複数のフォームを持っています(結果はmysqlから返されます)。フォームは次のようになります

<form action="?" method="POST" id="form1"> 

    <input type="text" name="title"/> 

    ................................. 
     other inputs 
    ................................. 

    <input type="submit" class="delete" id="delete" name="delete" value="delete"/> 

</form> 

同じ形だけ「フォーム2」、またはクエリに応じて(たForm3、form4など...)

jQueryのコードなどの形式のIDを持ちます私が達成したい何

$(document).ready(function(){ 

       var $dialog = $('<div></div>').html('<span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>Do you really want to delete it?') 

       .dialog({ 

          autoOpen:false, 

          resizable: false, 

          height:140, 

          modal: true, 

          title:'Confirm delete', 

          buttons: { 

           "Yes": function(){ 

           *********************************  
           document.forms["form1"].submit(); 
           ********************************* 

           $(this).dialog("close"); 

           }, 

           "No": function(){ 

            $(this).dialog("close"); 

           } 

          } 

       }); 

       $('#delete').click(function(){ 

          $dialog.dialog('open'); 

          return false; 

       }); 

    }); 

削除ボタンがにあるフォームの送信アクションをトリガーしたいとします。私が意味していたのは、ユーザーがform1の削除ボタンをクリックすると、form1だけが送信されるということです。私はJQueryコードの中で1つの行を星で強調表示しています。その特定の行にを追加すると、ユーザーが削除ボタンをクリックすると、対応するフォームまたはフォームインデックスのIDが取得され(削除ボタンが属する)、その特定のフォームのみが送信されます。

問題私が直面しています: 私は、フォームIDをハードコーディングすることができますが、それは検索語に依存して、私は正確にフォームの数を知ることができる方法はありません。だから私はそれを動的に取得しようとしています。出来ますか?

p.s.削除ボタンのクリックイベントで、$( '#delete')を選択すると、1つのフォームでのみ動作します。 $( '。delete')を使うと、すべての書式を提出しているのでしょうか? (var_dump($ _ POST)を実行すると空の配列が返されるため)

何か助けていただければ幸いです。より多くの情報が必要な場合は、私は提供することができます。

答えて

0

@itachi

ありがとうございます。デモhere

+0

ありがとう!これはまさに私が探していたものでした。ただの簡単な質問(私はちょうどここにそれを投稿すると思ったので、関連性があります)。フォーム送信関数による送信ボタンの値を送信する方法はありますか?(他の値はすべて、送信ボタンの名前と値を除いて$ _POST配列に表示されます)ありがとうございました! – itachi

+0

@itachi次のような隠し値を送ることができます:

0

これはあなた

$(this).parent('form').attr('name')
$(this).parent('form').serialize()
$('.delete').click(function(){ 

    alert($(this).parent('form').attr('name')); 
    alert($(this).parent('form').serialize()); 

});

を助けるかもしれあなたが複数のelememtsに同じIDを与えることができないあなたに

0

機能が

<script> 
function submitform(formname){ 
$(document).ready(function() { 
    $(("#"+formname)).submit(function() { 
     $.post('page.php', $(this).serialize(), function(data) { 
      $("#cart").append(data); 
     }); 
     return false; 
    }); 
}); 
} 
</script> 

フォームはあなたが与えることができるボタン
を提出することができます実行している見ることができます

$('.delete').click(function(e){ 
    e.preventDefault(); 
    currentForm = $(this).parent('form').get(0); 
    $dialog.dialog('open'); 
    return false; 
}); 

buttons: { 

    "Yes": function(){ 
     if(currentForm){ 
      currentForm.submit(); 
     } 
     $(this).dialog("close"); 
    }, 
    "No": function(){ 
     $(this).dialog("close"); 
    } 
} 

以下のようにコードを変更 foあなたのフォームをレンダリング中に名前が変わる

<button class="large-6 columns" type="submit" onclick="javascript:submitform('formname')">Select</button> 
関連する問題