jquery查找单元格值,如果存在则更改单元格,如果不添加新行

时间:2014-11-28 21:55:54

标签: javascript jquery html-table

非常感谢任何帮助。

我想要实现的是当输入到代码框中的数字/文本搜索表时,如果找到增量数量,如果找不到,则添加一个新行,将无数列计数。

我已经有了一些基本的jQuery代码。

<input type="text" style="width: 200px" id="code" name="code" />
<input id = "btnSubmit" type="submit" value="Release"/>
<table> <thead>
            <tr>
                <th>No</th>
                <th>Code</th>
                <th>Qty</th>

            </tr>
        </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>4444</td>
            <td>1</td>
        </tr>
        <tr>
            <td>2</td>
            <td>5555</td>
            <td>1</td>

        </tr>
        <tr>
            <td>3</td>
            <td>6666</td>
            <td>1</td>

        </tr>
  <tr>
            <td>4</td>
            <td>7777</td>
            <td>1</td>

        </tr>
    </tbody>
</table>

编辑:我的代码。

&#13;
&#13;
$(document).ready(function() {

  $("#btnSubmit").click(function() {

    var code = $("input#code").val()
    var table = $("table tbody");
    table.find('tr').each(function(i) {
      no = $(this).find('td').eq(0).text(),
        productId = $(this).find('td').eq(1).text(),
        Quantity = $(this).find('td').eq(2).text();


      if (productId == code) { //see if product is in table

        Quantity = +Quantity + +Quantity; // increase qty
        alert('found' + Quantity); 

      } else {
        // Add new row
        alert('not found');


      }


    });
  });
});
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

我把JSFiddle for you放在一起,并在这里复制了JS代码。我尽量让它尽可能初学者友好...

$("#btnSubmit").on("click", function(){
    numRows = $("tr").length;
    for(var i=1 ; i<numRows ; i++){
        var code = $("tr:nth-child(" + i + ") td:nth-child(2)").html();
        var qty = $("tr:nth-child(" + i + ") td:nth-child(3)").html();
        if(code == $("#code").val()){
            $("tr:nth-child(" + i + ") td:nth-child(3)").html(parseInt(qty) + 1);
            return true;
        }
    }

    $("tbody").append("<tr><td>" + numRows + "</td><td>" + $("#code").val() + "</td><td>1</td></tr>");
    return true;
});

答案 1 :(得分:0)

我使用jQuery创建了一个示例代码。我花了10分钟才弄清楚你想要实现的目标,但我希望我能理解你:

HTML方面:

<input type="text" style="width: 200px" id="code" name="code" />
<input id = "btnSubmit" type="submit" value="Release"/>
<table> <thead>
            <tr>
                <th>No</th>
                <th>Code</th>
                <th>Qty</th>

            </tr>
        </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>4444</td>
            <td>1</td>
        </tr>
        <tr>
            <td>2</td>
            <td>5555</td>
            <td>1</td>

        </tr>
        <tr>
            <td>3</td>
            <td>6666</td>
            <td>1</td>

        </tr>
  <tr>
            <td>4</td>
            <td>7777</td>
            <td>1</td>

        </tr>
    </tbody>
</table>

和我们的JavaScript:

$(document).ready(function() {
    var found = false;

    $("input#btnSubmit").on("click", function() {
        var search_val = $("input#code").val();

        $("tr").each(function() {
            var obj = $(this);

            obj.find("td").each(function() {
                if(parseInt($(this).html()) == parseInt(search_val))
                {
                    obj.find("td:nth-of-type(3)").html(parseInt(obj.find("td:nth-of-type(3)").html()) + 1);
                    found = true;
                }
            });
        })

        if(found == false)
        {
            $("table").append("<tr><td>"+($("tr").length)+"</td><td>"+search_val+"</td><td>1</td></tr>");
        }

        found = false;
    });
});

这里的JSFiddle:http://jsfiddle.net/f17gudfw/4/