2017-02-06 14 views
1

私はいくつかの入力タイプ=テキストを持つHTMLフォームを持っています。私はすべての入力を複製することができますが、データベースに情報を挿入するために名前を回復したいと思います。したがって、私はすべての名前を増やす必要があります。 1つのタイプの入力のみを増やすことができ、複数のタイプは増やせません。 クローン作成で入力名を増やす方法は?

<body> 

     <button id="clone">Cloner</button> 
     <button id="removebutton">Remove</button> 


     <form id="myForm"> 

      <div class="equipment" id="eqp"> 
        <h4 class="title4">EQUIPEMENT 1/EQUIPMENT 1</h4> 
         <label>Date de prêt/Loan date:</label> 
         <input type="text" name="loandate" id="datepicker" placeholder="ex: 20170101"/><br/><br/> 

         <label>Nom du produit/Product Name:</label> 
         <input type="text" name="productname" placeholder="ex: Asus"/><br/><br/> 

         <label>Type:</label> 
         <input type="text" name="type"/><br/><br/> 

         <label>Numéro de série/Serial Number:</label> 
         <input type="text" name="serialnumber" placeholder="ex: A003565DS65"/><br/><br/> 

         <label>Statuts/Status:</label> 
         <select name="status"> 
          <option>gg</option> 
          <option>hh</option> 
         </select><br/><br/>    
      </div> 

     </form> 


    </body> 
</html> 

JS:あなたの助けを

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

    $('#myForm').append($('#eqp:last').clone()); 
    $('#myForm div').each(function (i) { 
     var textinput1 = $(this).find('input'); 
     var textinput2 = $(this).find('input[text="productname"]'); 

     var select = $(this).find('select'); 

     i++; 
     textinput1.eq(0).attr('name', 'loandate' + i); 
     select.eq(0).attr('name', 'status' + i); 
    }); 

}); 

$("#removebutton").click(function() { 
    if ($('.equipment').length > 1) 
     $('.equipment:last').remove() 
}); 
//}); 

ありがとう!

答えて

1

使用<input name="loandate[]" >

あなたは、Array

は、ここでは、あなたのHTMLとJSに変更する必要があるものだとして、あなたは結果を取得します、名前をインクリメントする必要はありません。

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

 
    $('#myForm').append($('.equipment:last').clone()); 
 
    $('#myForm div').each(function (i) { 
 
     
 
    }); 
 

 
}); 
 

 
$("#removebutton").click(function() { 
 
    if ($('.equipment').length > 1) 
 
     $('.equipment:last').remove() 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<button id="clone">Cloner</button> 
 
     <button id="removebutton">Remove</button> 
 

 

 
     <form id="myForm"> 
 

 
      <div class="equipment"> 
 
        <h4 class="title4">EQUIPEMENT 1/EQUIPMENT 1</h4> 
 
         <label>Date de prêt/Loan date:</label> 
 
         <input type="text" name="loandate[]" id="datepicker" placeholder="ex: 20170101"/><br/><br/> 
 

 
         <label>Nom du produit/Product Name:</label> 
 
         <input type="text" name="productname[]" placeholder="ex: Asus"/><br/><br/> 
 

 
         <label>Type:</label> 
 
         <input type="text" name="type[]"/><br/><br/> 
 

 
         <label>Numéro de série/Serial Number:</label> 
 
         <input type="text" name="serialnumber[]" placeholder="ex: A003565DS65"/><br/><br/> 
 

 
         <label>Statuts/Status:</label> 
 
         <select name="status[]"> 
 
          <option>gg</option> 
 
          <option>hh</option> 
 
         </select><br/><br/>    
 
      </div> 
 

 
     </form>

あなたのHTMLに間違いがあったと考えてください。機器div要素のIDは(#eqp)です。そのdivを複製すると、同じIDを持つ複数の要素が得られます。 (それは良いことではありません)。あなたが変更する必要がどのような

は次のとおりです。あなたのJSを簡素化name[]

    • このよう
    • 編集フォーム名をそのIDを削除し、クラスセレクタを使用します。各要素に異なる名前を設定する必要はありません。
    • PHPに配列として配列します。

    PHP例:

    $i = 0; 
    
    do{ 
    
        $loandate = $_POST['loandate'][$i]; 
        $type = $_POST['type'][$i] 
        //... 
    
        $i++; 
    
    }while(isset($_POST['loandate'][$i])) 
    
  • +0

    しかし、私はノーPHPで名前を回復することはできませんか?だから私はすべてを回復するために "のために"行う必要がありますか? PHPの – Nono

    +0

    は、 '$ _POST ['loandate']'として参照することができます。それはあなたに配列を与え、 '$ _POST ['loandate'] [0]'のように繰り返すでしょう: – DDRamone

    +0

    何かこれのようなものでしょうか?: { $ loandate = $ _POST ['loandate'] [0]; } – Nono

    関連する問題