jQuery: bir form alanı arasında id bulabilirsiniz

1 Cevap php

Ben kullanıcı forma girdi kümesi eklemek için yeteneğine sahip olacak bir dinamik form oluşturma. Html bu gibi görünüyor:

<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>

Kullanıcı "addCredit" kimliği ile bağlantısını tıkladığında aşağıdaki jQuery komut dosyası denir:

$(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 işlevi bu gibi görünüyor ki, "addCredit.php" adında bir php dosyası sorgular:

<?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="">

Benim sorun addCredit.php sayfasına gönderilir ve buna göre form alanları güncelleştirmek böylece düzgün ayarlanmış javascript değişken $ credInt oluyor. Ben de formu eklenir her zaman, gönderilen bir sonraki değeri artırılır değer olduğundan emin olmak gerekir.

Bunu gerçekleştirmek nasıl Herhangi bir düşünce? Yardımınız için teşekkür ederim.

1 Cevap

Bu bunu yapmanın yanlış bir yoldur; PHP bir değişken adı dizi sözdizimi işleyebilir. Bu çok daha kolay işlemek için yapar. Bu formu klonlamak için sunucu çağırmak da gereksizdir. Bu gibi alanları adlandırmak gerekir:

<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>

Ve sonra Javascript bu gibi olabilir:

$(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;
    });
});

Değişkenler name[] PHP onlar bir dizi vardır tanıyacak ve daha sonra bunu yapabilirsiniz formatında çünkü formu nihayet, sunucuya gönderildiğinde:

<? 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>
<? } ?>

Açıkçası bu sadece bir örnek olarak göstererek, ama daha sonra onunla / güncelleme / ne olursa olsun tasarruf edebilirsiniz.