Php 如何引用动态表单元素并保持以前的元素正常工作?

Php 如何引用动态表单元素并保持以前的元素正常工作?,php,jquery,mysql,html-table,Php,Jquery,Mysql,Html Table,我在这方面做了很多搜索,所以如果我错过了,请原谅我,但这似乎是非常独特的 我有一个表格,需要动态添加行(和字段),然后我需要jQuery来操作其中的一些字段,然后必须将它们传递给PHP以转储到MySQL数据库中 除了jQuery处理字段的部分之外,我的一切都正常工作。基本上,应该是字段“单价”乘以字段“数量”,然后在“总价”字段中插入总价。问题是,由于我必须让这些字段具有不同的名称,所以它们都将传递给PHP,jQuery将只对第一个字段(当我删除数学代码中的+计数时)或最近添加的字段(当+计数存

我在这方面做了很多搜索,所以如果我错过了,请原谅我,但这似乎是非常独特的

我有一个表格,需要动态添加行(和字段),然后我需要jQuery来操作其中的一些字段,然后必须将它们传递给PHP以转储到MySQL数据库中

除了jQuery处理字段的部分之外,我的一切都正常工作。基本上,应该是字段“单价”乘以字段“数量”,然后在“总价”字段中插入总价。问题是,由于我必须让这些字段具有不同的名称,所以它们都将传递给PHP,jQuery将只对第一个字段(当我删除数学代码中的+计数时)或最近添加的字段(当+计数存在时)进行操作

下面是我添加行的jQuery代码(请注意,要使其在页面上看起来正确,并有一行可用,我必须有两个块,一个块要立即追加,一个块要单击链接:

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

 });
 });
和我的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>


感谢.blur上的

,您没有提供要模糊的字段的值(表示索引、计数或ID)。因此,js将只使用count变量的最后一个已知值

我建议,如果您想使用.blur,请执行以下操作:

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

我知道如何解决这个问题,但写答案的动机并不存在。这是一个大问题。Cameron,在清理代码格式方面的一些努力将大有帮助。如果代码易于阅读,许多人会更倾向于回答。我还没有完全弄清楚如何在这里放置代码块。我做了两个换行+fo你的空格在第一行,它在我的预览框中显示得很好,但在帖子页面上,它并没有在代码框中显示所有内容。(我承认,我对顶部附加内容的格式设置一开始就很糟糕)
$('input').blur(function() {
    var indexArr = $(this).attr('id').split('_');
    var price = $('#unitprice'+indexArr[1]).val();
    ....
});