2009-04-06 18 views
0

フォームに入力セットを追加する動的フォームを作成しています。jQuery:フォームフィールドのIDを確認します。

$(document).ready(function() { 
    var $ac = $('#addCredit'); 
    $ac.click(function() { 
/* the following two lines are where the problem lies? */ 
     var $credInt = $(this).prev(".title"); 
     $.get("addCredit.php", {num: $credInt}, 
     function(data){ 
     $('#newCredit').append(data);}); 
     return false; 
    }); 
}); 

jQueryの機能は、「addCreditと呼ばれるPHPファイルを照会します。ユーザーは、次のjQueryのスクリプトが呼び出され、「addCredit」のIDとのリンクをクリックすると

<form> 
    <input id="title1" class="title" name="title1" type="text" value=""> 
    <input id="productionCompany1" name="productionCompany1" type="text" value=""> 
    <input id="year1" name="year1" type="text" value=""> 
    <input id="role1" name="role1" type="text" value=""> 
<div id="newCredit">&nbsp;</div> 
<a href="#" id="addCredit">add another credit</a> 
</form> 

:HTMLは次のようになります

<?php 
$int = $_GET["num"]; 
$int = substr($int, -1); 
$int++; 
?> 
<input id="title<?php echo $int;?>" class="title" name="title<?php echo $int;?>" type="text" value=""> 
<input id="productionCompany<?php echo $int;?>" name="productionCompany<?php echo $int;?>" type="text" value=""> 
<input id="year<?php echo $int;?>" name="year<?php echo $int;?>" type="text" value=""> 
<input id="role<?php echo $int;?>" name="role<?php echo $int;?>" type="text" value=""> 

私の問題は、それがaddCredit.phpのページに送信し、それに応じてフォームフィールドを更新することができるように適切に設定するJavaScript変数$ credIntを取得している。このように見えるの.php」、。私はまた、フォームが追加されるたびに、送信される次の値がインクリメントされた値であることを確認する必要があります。

これをどのように達成できるかについてのご意見はありますか?ご協力ありがとうございました。

答えて

1

これは間違った方法です。 PHPは配列の構文を変数名で扱うことができます。これにより、扱いがより簡単になります。また、フォームをクローンするためにサーバーを呼び出す必要はありません。

<form> 
    <div id="originalCredit"> 
    <input name="title[]" type="text" value=""> 
    <input name="productionCompany[]" type="text" value=""> 
    <input name="year[]" type="text" value=""> 
    <input name="role[]" type="text" value=""> 
    </div> 
    <a href="#" id="addCredit">add another credit</a> 
</form> 

をそしてあなたはjavascriptがこのようにすることができます:あなたはこのようなあなたのフィールドに名前を付ける必要がある変数はname[]の形式であるため、フォームが最終的には、サーバーに送信され

$(function() { 
    $('#addCredit').click(function() { 
     var newCredit = $('#originalCredit').clone(); // create new set 
     newCredit.find('input').val(''); // empty input fields 
     $(this).before(newCredit); // append at the end 
     return false; 
    }); 
}); 

PHPは、彼らが配列であることを認識するであろうと、あなたはこれを行うことができます。

<? foreach($_POST['title'] as $k => $v) { ?> 
    Title: <?=$_POST['title'][$k]?><br> 
    Company: <?=$_POST['productionCompany'][$k]?><br> 
    Year: <?=$_POST['year'][$k]?><br> 
    Role: <?=$_POST['role'][$k]?><br> 
<? } ?> 

明らかにこれは一例として、それを表示されますが、その後、/更新/ whateveを保存することができますそれとr。

+0

クローン機能が大好きです。追加ファイルが不要です。美しいコード!ありがとうございました! – superUntitled

関連する問題