2012-04-21 165 views
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

+1

您正在打印'$信息[“身份证”]'在一个循环,'$ info'会不同的每一次迭代? – Armatus 2012-04-21 21:18:44

+0

我是啊@Armatus – Liam 2012-04-21 21:20:35

回答

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); 
    }); 
}); 
+0

谢谢@bricriu,似乎并没有工作,但是,我没有收到任何错误和萤火虫说,它发布的数据,但它并没有实际更新... – Liam 2012-04-21 21:07:51

+0

哦,对。这是因为$(this)的范围问题。我将编辑。 – bricriu 2012-04-21 21:08:47

+0

仍然没有运气@bricriu :( – Liam 2012-04-21 21:11:22

0

包裹它如果其他形式的有同样的类.bill-upd javascript .serlialize()也会从中获取值。确保其他表格有替代课程。

什么会更好,如果你给了形式独特的ID是如id="billform",然后用$('#billform').serialize()替换$('.bill-upd').serialize()

希望这会有所帮助。

编辑:

使用此:

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

序列化的是它被点击父。

+0

最初我确实有他们作为ID的,但仍然无法让它与页面上的多个窗体实例一起工作.... – Liam 2012-04-21 20:50:12

+0

它是同一个窗体的多个实例吗? – gimg1 2012-04-21 20:50:56

+0

同样的布局明智是的,他们都有不同的价值,虽然... – Liam 2012-04-21 20:52:15