仅在查询字符串中插入所选复选框的值及其各自的数量输入

时间:2015-04-12 16:39:30

标签: javascript php jquery

我在安装带有我需要的变量的查询字符串时遇到了问题。 我有以下部分代码:

echo "<form class='additionals'>";               
foreach($connection->query($sql2) as $additional)
{
    echo "
    <input class='additional-checkbox' type='checkbox' name='additional_id' value='{$additional['additional_id']}'/>{$additional['additional_name']} - &#36;{$additional['additional_price']} <input type='number' name='additional_quantity' value='1' min='1' max='5'/><br/>
    ";
}
echo "</form>";

在此代码段中,我从数据库中获取值,并将每个值插入一个复选框。 要使用jQuery获取所选复选框的值:

$(document).ready(function()
{
    $('.add').on('submit', function()
    {
        var product_id = $(this).closest('tr').find('.product-id').text();
        var product_name = $(this).closest('tr').find('.product-name').text();
        var quantity = $(this).closest('tr').find('input').val();
        if ($(this).closest('tr').find('input.additional-checkbox').is(':checked'))
        {
            var additionals = $(this).closest('tr').find( '.additionals' ).serialize();
            window.location.href = "add_to_cart.php?product_id=" + product_id + "&product_name=" + product_name + "&quantity=" + quantity + "&" + additionals;
        }
        else
        {
            window.location.href = "add_to_cart.php?product_id=" + product_id + "&product_name=" + product_name + "&quantity=" + quantity;
        }
        return false;
    });
});

假设只选择了值为1的复选框,并且与其数量值相关的前面输入为3。我的输出应该是这样的:

add_to_cart.php?product_id=4&product_name=Pizza&quantity=1&additional_id=1&additional_quantity=3

这是我的小问题。我有我想要的部分输出,但其他数量输入的值也插入到序列化。通过这种方式输出如下:

add_to_cart.php?product_id=4&product_name=Pizza&quantity=1&additional_id=1&additional_quantity=3&additional_quantity=1&additional_quantity=1

如何仅在查询字符串中显示与所选复选框相关的输入数量?如何将复选框的输入与数量输入联系起来?

2 个答案:

答案 0 :(得分:0)

看起来像是

var additionals = $(this).closest('tr').find('.additionals')

返回多个表单。是否有可能,在单TR中你有多个这样的形式?

答案 1 :(得分:0)

试试这个

<input name="quantity_id" type="checkbox" data-quantity-input="quantity">
<input name="quantity" type="input" value="">

// get the data-quantity-input
var qtyInput = $(this).data('quantity-input');

// find the corresponding value if checkbox is checked
find('input[name='"+ qtyInput +'"]').val();

“data”属性应该是唯一的。您可以在“for”循环中使用索引。