jQuery: Dinamik form elemanları referans ve çalışma önceki elemanları tutmak nasıl?

1 Cevap php

Ben bu arama bir çok şey, o yüzden özledik eğer lütfen beni affet, ama bu oldukça benzersiz görünüyor ettik.

Ben dinamik olarak eklenecek satır (ve alanları) gerekir, ve sonra ben bu alanlardan bazılarını işlemek için jQuery gerekir, ve sonra bir MySQL veritabanı içine dampingli PHP kapalı geçilmesi gereken bir formda bir tablo var .

JQuery alanlarını yöneten bölümü hariç her şey çalışma var. Temelde ne gerçekleşmesi gereken alana göre çarpılır alır 'qty' BirimFiyat 'alan ve' TotalPrice 'alanına toplam ekler. Zaman ((I + matematik kod saymak çıkardığınızda) Sorun ben hepsi PHP geçmek gerekir, böylece bu alanların farklı isimlere sahip olması gibi, olan, jQuery sadece ilk sahada çalışacak, ya da en son eklenen + sayımı) vardır.

İşte satır (sağ sayfada bakmak ve başlamak için hazır bir satır var, biri hemen eklemek için, iki blok vardı ve bağlantı tıklama biri yapmak için not eklemek için benim jQuery kodu:

     $(function(){
 $('#itemstablejquery').append(
 '<div class="jquery_items"><table id="jquery_items" width="100%" border="1" cellpadding="0" cellspacing="0"><tr><td width="10%">' 
 + '<input size="8" id="itemnum_' + count + '" name="itemnum[]' + '" type="text" /></td>'
 + '<td><input size="' + descwidth + '" id="description_' + count + '" name="description[]' + '" type="text" /></td>'
 + '<td width="5%"><input size="2" id="qty_' + count + '" name="qty[]' + '" type="text" /></td>'
 + '<td width="10%"><input size="' + unitpricewidth + '" id="unitprice_' + count + '" name="unitprice[]' + '" type="text" /></td>'
 + '<td width="11%"><input size="'+ totalpricewidth + '" id="totalprice_' + count + '" name="totalprice[]' + '" type="text" /></td>'
 + '</tr></table></div>'
 );

 });
 var count = 0;
 $(function(){
 $('p#add_field').click(function(){
 count += 1;
 $('#itemstablejquery').append(
 '<table id="jquery_items" width="100%" border="1" cellpadding="0" cellspacing="0"><tr><td width="10%">' 
 + '<input size="8" id="itemnum_' + count + '" name="itemnum[]' + '" type="text" /></td>'
 + '<td><input size="' + descwidth + '" id="description_' + count + '" name="description[]' + '" type="text" /></td>'
 + '<td width="5%"><input size="2" id="qty_' + count + '" name="qty[]' + '" type="text" /></td>'
 + '<td width="10%"><input size="' + unitpricewidth + '" id="unitprice_' + count + '" name="unitprice[]' + '" type="text" /></td>'
 + '<td width="11%"><input size="'+ totalpricewidth + '" id="totalprice_' + count + '" name="totalprice[]' + '" type="text" /></td>'
 + '</tr></table>'
 );

 });
 });

Burada matematik jQuery:

$("table#jquery_items").live("click", function(){
$('#totalprice_' + count).css('color', 'red')
$('input').blur(function() {
var price = $('#unitprice_' + count).val() 
var quantity = $('#qty_' + count).val() 
var total = price * quantity;
if (!isNaN(total)) {
$('#totalprice_' + count).attr('value', total)
} else {
alert('Ops Error! Please only numbers')
}
})
});

Ve HTML:

<div id="itemstablejquery"><a name="items" id="items"></a>
    </div>
    <p id="add_field"><a href="#items"><span>&raquo; Add another item...</span></a></p>

Teşekkürler

1 Cevap

Üzerinde. Eğer alan bulanık olan (ID indeksi yani, ya da saymak, ya da) değer sağlayarak değil bulanıklık. Yani, sadece js sayısı değişkenin bilinen son değerini kullanır.

. Seni kullanmak istiyorsanız, önermek bulanıklık gibi bir şey yapardı:

$('input').blur(function() {
    var indexArr = $(this).attr('id').split('_');
    var price = $('#unitprice'+indexArr[1]).val();
    ....
});