0

在我的页面上,我有多个与此相同的表单...

<form class='bill-upd'>
   <input type='hidden' value='".$info['rand']."' name='rand2' id='rand2'>
   <input type='hidden' value='".$info['id']."' name='billid' id='billid'>
   Total <input type='text' id='total' name='total' /><br />
   Bill name<input type='text' id='bill-name' name='bill-name' /><br />
   bill descriptiion <input type='text' id='bill-description' name='bill-description' /><br />
   bill colour<input type='text' id='bill-colour' name='bill-colour' />
   <input type='button' value='submit' onClick='updateBill();' />
</form>  

然后我有我的 AJAX

function updateBill()
{
    $.post('update_bill.php', $('.bill-upd').serialize(), 
        function(data) {
        $(this).append(data);
    });
};

如果我的页面上有一个表单,这可以正常工作,但是当有多个实例时,我的相同记录被覆盖,有人可以告诉我哪里出错了吗?

谢谢


在@Armatus 和@Bricriu 的帮助下,我对它进行了排序,标记为有效的答案,愚蠢地忘记将它包装在 document.ready 中

4

2 回答 2

1

您需要一种方法来指定要更新的账单,否则它只会占用所有账单。这应该可以工作,因为我们可以通过单击哪个按钮来确定它是哪一个。

编辑:我个人会使用 jQuery 而不是 onClick 来绑定元素本身:

$(".bill-upd input:submit").click(function(){
    var elem = $(this);
    $.post('update_bill.php', elem.parent('.bill-upd').serialize(), 
        function(data) {
        elem.append(data);
    });
});
于 2012-04-21T21:01:00.913 回答
0

如果其他表单具有相同的类.bill-upd,则 javascript.serlialize()也会从中获取值。确保其他表格有备用课程。

如果你给表单一个唯一的 id 会更好,例如id="billform"然后替换$('.bill-upd').serialize()$('#billform').serialize().

希望这可以帮助。

编辑:

用这个:

$(this).parent('.bill-upd').serialize() 

序列化被点击的父级。

于 2012-04-21T20:48:46.440 回答