如何阻止循环成功

时间:2017-09-25 13:35:40

标签: javascript asp.net-mvc for-loop foreach kendo-grid

我提交了一个脚本,当提交了一个文章ID时,它会遍历我的剑道网格,当找到匹配项时,此脚本会为数量添加+1。找到匹配后,我希望我的脚本停止循环,因为相同的文章ID在网格中可以有多于1行,并且想法只是为第一个匹配添加+1。我知道foreach循环不能包含break;并且使用for循环似乎不适用于kendo-grid数据行。目前,代码为每个匹配的行添加+1。有谁知道我怎么能做到这一点?

JS:

$('#txtBarcode').submit(function (e) {
    var grid = $("#GCLinesGrid").data("kendoGrid");
    var dataSource = $("#GCLinesGrid").data("kendoGrid").dataSource;
    var allData = grid.dataSource.data();
    var code = this.value;

    $.each(allData, function (index, item) {
        if (item.ArticleCode == code) {
            if (item.CollectedQuantity < item.Quantity) {
                item.CollectedQuantity++;                    
                item.dirty = true;
                dataSource.sync();   
            }
        }
    })
})

3 个答案:

答案 0 :(得分:4)

一旦发现匹配,一个简单的return false;应该可以解决问题。

答案 1 :(得分:4)

使用return false是提前摆脱each()循环的官方方式。

答案 2 :(得分:0)

你可以使用一个函数,当if为真时返回:

$('#txtBarcode').submit(function (e) {
    var grid = $("#GCLinesGrid").data("kendoGrid");
    var dataSource = $("#GCLinesGrid").data("kendoGrid").dataSource;
    var allData = grid.dataSource.data();
    var code = this.value;
    loop(/*args here*/)
})

function loop (/*args you need here*/) {
   $.each(allData, function (item, index) {/*fix forEach*/
      if (item.ArticleCode == code) {
         if (item.CollectedQuantity < item.Quantity) {
            item.CollectedQuantity++;                     
            item.dirty = true;
            dataSource.sync();
            return false; /*or return some value you need*/
         }
      }
   })
}
相关问题