2012-01-19 6 views
0

jQuery serialize()について多くの記事を読んだことがありますが、私のフォームでは動作しません!jQuery/JavaScriptのシリアライゼーション空の文字列(名前のエラーでもエラーでもない)

私はhtml + phpを使用してフォームを印刷するときに動作しますが、javascriptを使用してフォームを印刷すると動作しません。私は何が欠けていますか?

<!DOCTYPE html> 

<head> 
    <link rel="stylesheet" type="text/css" href="style.css"> 
    <title>MerBeer</title> 

    <!-- //jquery --> 
    <script type="text/javascript" src="../js/jquery-1.7.1.min.js"></script> 
    <!-- //Ajaxscript: --> 

    <script type="text/javascript"> 
     $(document).ready(function() { 

     $("#knappen")  
     .delegate('button[name="minKnapp"]', "click", beer_insert); 

     $("#theForm")  
     .delegate('button[name="beer_form_submit"]', "click", serial); 

     function serial(){ 

      var f = $('#beer_form'); // CHANGE THIS VALUE TO CHANGE FORM!! #beer_form and #testForm 
      var beerContainer = f.serialize(); 
      alert (beerContainer); 

     } 

     function beer_insert() { 

       //hide first button 
       $('#dold').hide(); 

       //Dynamically added form 
       $('#theForm').html('Test :<br><form name="beer_form" id="beer_form"><table id="beers">'); 
       for (var i = 0; i < 1; i++){ 
        $('#theForm').append('<tr><td><input type="text" name="beerCountry" id="beerNo_'+i+'_country" /></td></tr>'); 
       } 
       $('#theForm').append('</table></form><br>'); 

       $('#theForm').append('<button name="beer_form_submit">Second button</button><br>') 
     } 
    }); 

    </script> 

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
</head> 

<body> 
    <!-- Form that works--> 
    <form id="testForm" name="testForm"> 
     <table> 
      <?php 
       for($i = 0; $i < 3; $i++){ 
        echo('<tr><td><input type="text" name="test" id="inget'.$i.'"/></td></tr>'); 
       } 
      ?> 
      <tr><td><input type="text" name="test" id="ingetA"/></td></tr> 
      <tr><td><input type="text" name="test" id="ingetB"/></td></tr> 
     </table> 
    </form>   

    <div id="theForm"></div> 
    <div id="knappen"><button id="dold" name="minKnapp">The Button</button></div> 

</body> 

答えて

0

私はこのことについて記事の束がある知っているが、一人一I'veが見つかったが(http://jsfiddle.net/ZBxkz/1/ここに私のコードを試してみてください)名前=「」を忘れPPLについてですまたは無効に

私はあなたの質問が正しいことを望みますが、おそらくあなたはこれが欲しいでしょうか?:

あなたのhtmlを多くの追加と共に置かないでください。代わりに、最初に完全なHTML文字列を作成し、それをコンテナに追加します。これによりブラウザのHTMLフラグメントが解析され、(自動的に開いているタグを閉じるなどのように)意味をなさないため、予期せぬ動作から保護されます。

+0

あなたはそれが上のスポットです!どうもありがとう! – DannyThunder

0

にはにフォームがありますが、の後にが追加されています。したがって、シリアル化を呼び出すと、文字通りはありません。をシリアル化します。

// this creates the form 
$('#theForm').html('Test :<br><form name="beer_form" id="beer_form"><table id="beers">'); 

// but these don't append INTO it 
for (var i = 0; i < 1; i++){ 
    $('#theForm') 
     .append('<tr><td><input type="text" name="beerCountry" id="beerNo_'+i+'_country" /></td></tr>'); 
} 

$('#theForm').append('<button name="beer_form_submit">Second button</button><br>') 

これはかなりあなたのワークフローになりたいものです。

// create my form 
var my_dynamic_form = $('<form></form>'); 

// append to it 
for (;;) { 
    my_dynamic_form.append('<input/>'); 
} 

// append your form to the DOM 
$('#my_form').append(my_dynamic_form); 
+0

これをクリアしていただきありがとうございます!私はそれを逃すことができないのか知りません、何回HTMLの出力をチェックしたのか分かりません:-Dあなたが "自分のコードブラインド"を得るとき、または何を呼び出すべきか:-D – DannyThunder

関連する問題