检查项目使用Jquery已经存在于表中

时间:2014-09-09 06:19:31

标签: c# javascript jquery asp.net

我有一个Select2列表,并在表格中添加了多个项目。但是我想检查表格中是否已经存在项目,而不是首先添加新项目但是我的代码下面不起作用。

在此代码中,每次显示Not Found&添加重复的行

HTML部分

<select id="select-product" multiple style="width: 300px">
</select>

代码

  $("#select-product").change(function () {
        debugger;
        var $option = $('#select-product option');
        if ($("#select-product option[value='ProductCode']").length > 0) {
            alert("Found");
        }
        else
        {
            alert("Not Found");
        }

        $option.each(function () {
            if ($(this).is(':selected')) {
                debugger;
                var itm = $(this).is(':selected');
                var temp = $(this).attr('ProductCode');

                var row = '<tr>';
                row += '<td class="itmcode">' + $(this).attr('ProductCode') + '</td>';
                row += '<td class="itmname">' + $(this).text().replace(temp, " ") + '</td>';
                row += '<td class="unit">' + $(this).attr('Unit_UnitId') + '</td>';
                row += '<td class="retprice" dir="rtl" align="right">' + $(this).attr('RetailPrice') + '</td>';
                row += '<td class="col-md-1 inpqty" dir="rtl">' + '<input type="text" class="input-qty form-control col-md-3 center-block input-sm" data-id="' + $(this).val() + '" data-prod-id="' + $(this).attr('Value') + '">' + '</td>';
                row += '<td class="col-md-1 disc" dir="rtl">' + '<input type="text" class="input-disc form-control input-sm">' + '</td>';
                row += '<td class="tot" dir="rtl" align="right">0</td>';
                row += '<td class="imgdel"><img class="btn-img-del" src="../Images/delete.png" alt="" title="Delete" /></td>';
                row += '</tr>';

                table.append(row);
            }

        });


        $('#select-product').select2('data', null);



    });

多个产品代码

 function CallMultipleProducts() {

        $.ajax({
            type: "POST",
            url: '/Sales/GetMultipleProducts',
            contentType: "application/; charset=utf-8",
            dataType: "json",
            async: false,
            success: function (msg) {
                debugger;
                if (msg._productlist.length > 0) {
                    debugger;
                    $.each(msg._productlist, function (index, item) {
                        debugger;
                        $('#select-product').append($("<option></option>")
                            .attr("Value", item.ProductId)
                            .attr("RetailPrice", item.RetailPrice)
                            .attr("ProductCode", item.ProductCode)
                            .text((item.ProductCode) + " " + (item.ProductName))
                            );
                    });
                }
            }
            // error: AjaxError
        })
    }

2 个答案:

答案 0 :(得分:0)

确保您的html中只包含select个唯一id="select-product"的项目。

尝试以下代码,使用.find()

if ($("#select-product").find("option[value='ProductCode']").length > 0) {
     alert("Found");
}

答案 1 :(得分:0)

如果元素为input type =“text”,

,请尝试将以下选项添加到select2选项中
$("#select-product").select2({
    createSearchChoice:function(term, data) {  if ($(data).filter(function() { return this.text.localeCompare(term)===0; }).length===0) {return {id:term, text:term};} }
});

如果您使用的是<select>元素,我担心您无法使用此选项。您必须使用input。您可能会发现有用的内容here