为什么Jquery返回错误的长度?

时间:2010-09-30 02:07:28

标签: jquery

我正在使用此代码向表单添加元素。然后我计算该类的元素总数。但是,Jquery .length返回元素数乘以2。

任何想法我做错了什么?

$(function () {
    function updateWeight() {
        var z = $("input.count").length;
        alert(z);
    }
    $("#addCatalogItem").autocomplete({
        source: function (request, response) {
            $.getJSON("inventory_auto_complete.php", {
                term: request.term,
                supplier_id: $('#supplier_id').val()
            }, response);
        },
        minLength: 2,
        select: function (event, ui) {
            var q = ui.item.product_id;
            $('#product_id').val(q);
            var r = ui.item.value;
            $('#product').val(r);
            var field = '<label>' + r + '</label><input class=\"count\" type=\"text\" value=\"\" name=\"field[' + q + ']\"/>';
            var $item = $("form");
            $(field).appendTo($item);
            updateWeight();
        }
    });
});

HTML

<form>
    <input type="hidden" id="supplier_id" value="1"/>
    <input id="addCatalogItem"/>
</form>

1 个答案:

答案 0 :(得分:1)

var $item = $("form");会占用页面中的所有表单。也许你在页面的某个地方有其他形式。

simple test case的{p> Yi Jiang表明您的代码应该可以正常运行。

Here's a test case显示与您的问题相同的结果。

我的建议是,您将表单设为ID,然后将其用作选择器var $item = $("#formID");