2013-04-05 56 views
0

我想知道是否有人看到了這一點。我有一個kendo網格,在保存事件中,我想做一些驗證。基本上要確保舊的新值之間的差值小於或等於餘額。Kendo Grid - 在Firefox中觸發保存事件中的警報會導致頁面重新加載

因此,如果它大於餘額,我會觸發警報並阻止默認設置。但是,顯示警報會導致頁面在FireFox中重新加載。

這裏是我的網格:

$("#gridOpenInvoices").kendoGrid({ 
     autoBind: false, 
     dataSource: openInvoicesData, 
     scrollable: true, 
     sortable: false, 
     navigatable: true, 
     toolbar: [{name:"save", 
        text:strings.ApplyUpdates}, 
        {name: "SplitPayment", 
        text: strings.SplitPayment}, 
        {name: "PaidOut", 
        text: strings.PaidOut}, 
        {name: "CreateCredit", 
        text: strings.CreditBalance}, 
        {name: "UndoAllocation", 
        text: strings.UndoAllocation}], 
     columns: [ 
      { 
       field: "CustomerName", 
       title: strings.AccountName, 
       hidden: true 
      }, 
      { 
       field: "OpenTransactionId", 
       title: strings.OpenTransaction, 
       width:90 
      }, 
      { 
       field: "InvoiceNumber" , 
       title: strings.InvoiceNumber, 
       width:65 
      }, 
      { 
       field: "GrossSales", 
       title: strings.OriginalAmount, 
       width: 75, 
       format: "{0:c}", 
       decimals: 2, 
       min: 1, 
       value: 0 

      }, 
      { 
       field: "Balance", 
       title: strings.TransBalance, 
       width: 75, 
       format: "{0:c}", 
       decimals: 2, 
       min: 1, 
       value: 0 

      }, 
      { 
       field: "Date", 
       title: strings.Date, 
       width:75, 
       format: "{0:MM/dd/yy}" 

      }, 
      { 
       field: "Age", 
       title: strings.Age, 
       width:55 

      }, 
      { 
       field: "CheckNumber", 
       title: strings.CheckNumber, 
       width:85 
      }, 
      { 
       title: strings.ApplyPayment, 
       width:75, 
       template: "<input class='k-chk-applied chkbox' type='checkbox' data-bind='source: IsApplied' name='IsApplied' #= IsApplied ? 'checked' : ''#/>", 
       attributes:{"class":"tdIsApplied"} 
      }, 
      { 
       field:"AppliedAmount", 
       title: strings.AppliedAmount, 
       format: "{0:c}", 
       width: 95, 
       attributes: {"class" : "tdAppliedAmount"} 
      }], 
save: function(e) { 
    var model = e.model; 
    if (e.values.AppliedAmount != null) { 
     var remainingBalance = context.getRemainingBalance(); 
     var difference = e.values.AppliedAmount - model.AppliedAmount; 
     if (remainingBalance >= difference) { 
      var balanceCopy = model.BalanceCopy; 
      model.Balance = model.GrossSales - e.values.AppliedAmount; 
      model.BalanceCopy = model.GrossSales - e.values.AppliedAmount; 

      if (model.Balance == 0 && model.IsUncollected) { 
       model.IsUncollected = false; 
       context.UpdateBalance(balanceCopy, 0, true); 
      } 
      context.UpdateBalance(model.AppliedAmount, e.values.AppliedAmount, true); 
      this.refresh(); 
      context.showButtons(); 
     } 
     else { 
      alert("The applied amount exceeds the remaining balance"); 
      e.preventDefault(); 
     } 
    } 
}, editable:"incell"}); 

這似乎當你編輯的應用量和回車承諾只發生。任何想法爲什麼發生這種情況?

+0

我想我似乎是唯一一個看到這個。只需添加,當保存事件被觸發並且沒有顯示警報時,一切都很順利。如果我甚至在save事件中放置了一個調試器,並在appliedAmount字段中輸入一個數值並敲回車鍵,那麼頁面將重新加載。 – Pritesh 2013-04-10 12:59:31

回答

0

解決方案非常簡單:不要使用警報。

我在kendoUI小部件的某些事件中遇到同樣的問題。 如果您需要向用戶顯示某些內容,請將其模式屬性設置爲true的kendoWindow使用。

警報只能用於調試目的,如console.log。

+0

啊我明白了。我的假設是警報實際上是使用kendoWindow。感謝這工作。 – Pritesh 2013-04-10 15:19:01

相關問題