具有多于1个输入表单的keyup

时间:2012-02-19 07:28:29

标签: jquery

第一个输入表单总是有效,但第二个,第三个,第四个等等从不这样做。我做错了什么? 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> 

3 个答案:

答案 0 :(得分: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();

这应该有用。

答案 1 :(得分:1)

两种表单都有相同的ID。

答案 2 :(得分:1)

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

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