2012-02-11 24 views
2

jQueryを使用して電子メールアドレスの新しいフィールドを動的に作成しています。このフィールドには、電子メールアドレスのタイプと電子メールアドレスのテキストINPUTを指定するSELECTドロップダウンボックスがあります。動的に作成されたインデックスフィールドはフォームで送信されません

HTML

<form enctype="multipart/form-data" action="handler.php" method="post" /> 
<ul class="ul-lov"> 
<li> 
    <select name="email_type_id[]" class="float-l edit-email-type"> 
     <option value="1">No Label</option> 
     <option value="5">Email</option> 
     <option value="10" selected="selected">Personal</option> 
     <option value="20">Work</option> 
     <option value="30">Other</option> 
    </select> 
    <input type="text" name="email_value[]" value="[email protected]" class="float-l edit-email"> 
    <img src="/gui/minus-button.png" class="minus"> 
    <img src="/gui/plus-button.png" class="addlov"> 
</li> 
</ul> 
</form> 

のjQuery: ユーザーは "プラスbutton.png" をクリックすると、それは次のコードを実行します。基本的には、現在のLIのコピーを作成して値を削除します。

// Click plus 
$('.addlov').live('click', (function() {   
    $(this).closest('ul').append(
     $(this).parent('li').clone(true).children('input, select').val('').end() 
    ); 
    $(this).remove(); 
})); 

これはすべて正常に動作しますが、問題はフォームを送信すると動的に作成されるフィールドが無視されることです。送信時に、私はフォームデータをシリアル化し、これを確認するアラートで表示しています。私はすべてを試しました、問題が何であるかを見ることができません!何か案は?

答えて

1

私は上記の投稿フォームスニペットがはるかに大きいアプリのほんの一部だった...

それを考え出しました。アプリはまだページ上に1つのフォームしか使用していません。異なるdivには多数のフォーム要素があります。それが機能していなかったのは、私のFORMタグがすべてのdivの外にないからです。

<div id="topform"> 
    <form action="handler.php" method="post"> 
    // some form items 
</div> 
<div id="moreformstuff"> 
    // some form items 
</div> 
<div id="bottomformstuff"> 
    // some form items 
    </form> 
</div> 

だから私はこのように私のタグを動き回る:

<form action="handler.php" method="post"> 
<div id="topform">   
    // some form items 
</div> 
<div id="moreformstuff"> 
    // some form items 
</div> 
<div id="bottomformstuff"> 
    // some form items 
</div> 
</form> 

、すべてが今、正常に動作します。ここ

は私のコードを設定した方法の例です。 :/これは誰かが同じ問題で時間を無駄にするのを助けることを願っています!

0

<pre><?php var_dump($_POST); ?></pre>をhandler.phpにスローし、何が渡されるかを確認してください。私はあなたの例をテストする場合、一度のプラス記号をクリックして、それを記入した後、私はhandler.phpにこれを取得する:

array(2) { 
    ["email_type_id"]=> 
    array(2) { 
    [0]=> 
    string(2) "10" 
    [1]=> 
    string(2) "30" 
    } 
    ["email_value"]=> 
    array(2) { 
    [0]=> 
    string(14) "[email protected]" 
    [1]=> 
    string(15) "[email protected]" 
    } 
} 

あなたがhandler.phpする投稿する前に、データに何かをやっていますか?

+0

ええ、それは事です、それはずっと前に働いていました。投稿した作品は、大きなアプリのほんの一部です。しかし、私はそれが最後に働いて以来、多くをやっていないので、それが働くのを止めた原因を突き止めるように思えません。確認していただきありがとうございます。 – awaldron

関連する問題