2017-09-25 5 views
1

article-idが送信されたときに私の剣道グリッドをループするスクリプトがあります。このスクリプトは、一致が見つかったときに+1に数量を追加します。一致が見つかったら、同じarticle-idがグリッド内に複数の行を持つことができ、最初の一致に+1だけ追加することになるので、スクリプトのループを止めたい。私はforeachループにbreak;を含めることはできませんし、forループを使用することは剣道グリッドのデータローに対しては機能していないようです。現在、コードは一致する行に+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(); 
      } 
     } 
    }) 
}) 
+1

jQueryの 'each'を使用しないでください、あなたがする必要がある場合は、単なる' for'ループして終了を行います。 – DavidG

+0

'false'を返すことで、' each'をjQueryで中止することができます。または、適切な項目を取得するために[Array#find](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)を使用してください: 'var item = allData.find (item => item.ArticleCode === code && item.CollectedQuantity Thomas

答えて

4

トリックを行う必要が発見された一致度の単純なreturn false;

+0

これはトリックの喝采でした。 – Alim

+0

素晴らしい、私は助けることがうれしい! –

4

使用return falseは、each()ループを早期に突破するための公式な方法です。

+0

これはjQueryの 'each()'ループの機能であり、ネイティブのArrayメソッドには適用されません。ちょうどそれを明確にする。 – Thomas

0

あなたは、関数を使用すると、trueの場合とき返すことができます。

$('#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*/ 
     } 
     } 
    }) 
} 
関連する問題