2012-02-19 99 views
0

第一种输入形式始终有效,但第二种,第三种,第四种等输入形式永远不会。我究竟做错了什么?使用多于一个输入表格的键盘输入

jQuery的

$('#cartUpdate').keyup(function() { 

    var url = $(this).attr('action'); 
    var qty = $('input[name=qty]').val(); 
    var rowid = $('input[name=rowid]').val(); 

    if(qty > 0) { 
     $.post(url, {qty: qty, rowid: rowid }, function(changeCost) {  

     }); 
    } 

    return false; 
}); 

HTML:

<form action="cart/update" id='cartUpdate' method="post" accept-charset="utf-8">  
    <input type="hidden" name="rowid" value="76ea881ebe188f1a7e7451a9d7f17ada" /> 
    <input type="text" name="qty" value="5" />  
</form> 
<form action="cart/update" id='cartUpdate' method="post" accept-charset="utf-8">  
    <input type="hidden" name="rowid" value="e7a36fadf2410205f0768da1b61156d9" /> 
    <input type="text" name="qty" value="1" /> 
</form> 

回答

2

您在两种表单中都使用相同的ID,只返回第一个元素。你应该在你的表单中使用class,即class =“cartUpdate”,在函数中使用$('。cartUpdate'),或者你也可以使用id =“cartUpdate1”,id =“cartUpdate2” cartUpdate1,#cartUpdate2')。keyup(...);

注意:使用id作为唯一元素和类的一组匹配元素。

var qty = $('input[name=qty]', $(this)).val(); 
var rowid = $('input[name=rowid]', $(this)).val(); 

这应该起作用。

+0

感谢您的说明不知道。我把它改成了一个类,并使用萤火虫我可以看到它正在发送数据,但第二,第三,第四等表单正在传递与第一个相同的数据。有任何想法吗? – Claremont 2012-02-19 07:54:26

+0

检查我的答案,它已更新。 – 2012-02-19 07:58:48

+0

是的,谢谢你的工作。我仍然是一个小菜鸟,无论如何,你可以解释做了什么? – Claremont 2012-02-19 08:01:38

1

您有两种形式相同的ID。

+0

这可以更好地发表评论 – Moons 2012-02-20 05:08:05

1

您不应该有多个具有相同ID的元素。 $('#cartUpdate')使用本机document.getElementById,它只返回一个元素(第一个元素)。

将一个类改为分配给两个表单并使用它。