我提交了一个脚本,当提交了一个文章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();
}
}
})
})
答案 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*/
}
}
})
}