2015-06-17 56 views
2

我有一個輸入來輸入一些數據,並希望使用JavaScript來驗證它。我用下面的代碼:lightswitch html客戶端輸入驗證未更新

myapp.AddEditHaendlerItem.beforeApplyChanges = function (screen) { 


    // check PLZ 
    if (screen.HaendlerItem.PLZ != "12345") { 

     screen.findContentItem("PLZ").validationResults = [ 
      new msls.ValidationResult(
       screen.HaendlerItem.details.properties.PLZ, 
       "PLZ muss eine Zahl und 5 Zeichen lang sein.") 
     ]; 

     return false; 

    } 
}; 

但是我不知道,如何刪除驗證結果。例如,如果用戶糾正了輸入,驗證錯誤仍顯示出來。我怎樣才能刪除它?

謝謝!

+1

你有沒有嘗試從數組中刪除對象? – Kris

+0

@jvh我提出的答案是否有助於爲您的問題提供解決方案? –

回答

2

由於錯誤不會自動從內容項目的validationResults數組中刪除,您需要手動刪除它。

我們通常採用的方法是在contentItem中添加一個dataBind更改處理程序,以在用戶「關閉」條目時重置validationResults。當用戶保存並執行beforeApplyChanges函數時,任何剩餘的錯誤都會重新應用。

下面的代碼片段集錦這樣的做法: -

myapp.AddEditHaendlerItem.PLZ_postRender = function (element, contentItem) { 
    contentItem.dataBind("value", function (value) { 
     contentItem.validationResults = []; 
    }); 
}; 

myapp.AddEditHaendlerItem.beforeApplyChanges = function (screen) { 
    // check PLZ 
    if (screen.HaendlerItem.PLZ != "12345") { 
     screen.findContentItem("PLZ").validationResults = [ 
      new msls.ValidationResult(
       screen.HaendlerItem.details.properties.PLZ, 
       "PLZ muss eine Zahl und 5 Zeichen lang sein." 
      ) 
     ]; 
     return false; 
    } 
}; 

另外,如果您想爲用戶提供更直接的反饋,你可以移動驗證測試到的更改處理如下: -

myapp.AddEditHaendlerItem.PLZ_postRender = function (element, contentItem) { 
    contentItem.dataBind("value", function (value) { 
     contentItem.validationResults = []; 
     // check PLZ 
     if (value != "12345") { 
      contentItem.validationResults = [ 
       new msls.ValidationResult(
        contentItem.details, 
        "PLZ muss eine Zahl und 5 Zeichen lang sein." 
       ) 
      ]; 
     } 
    }); 
}; 

這將執行驗證作爲用戶'標籤'關閉條目,而不是延遲檢查,直到用戶保存。