2016-06-14 69 views
0

我已經在asp中創建了一個數據網格。網格鏈接到這個有少量數字數據類型列表(22,8)的表格。我將這些字段設置爲可編輯字段,因此我試圖驗證其精確度和縮放比例。 目前我有這種方法,它適用於VARCHAR數據類型:如何驗證JavaScript中的數字數據類型長度?

var colList = 
[ 
    ["customer_name", 32], 
    ["customer_address", 32], 
    ["price",22] // this is numeric (22,8) 
]; 

for (var i = 0; i < colList.length; ++i) { 
    if (currentColumnName == colList[i][0].toString()) { 
    if (currentRowKey.toString().length > colList[i][1]) { 
     var error = (colList[i][0].toString() + " can only have a maximum of " + colList[i][1] + " characters."); 
     alert(error); 
     eventArgs.set_cancel(true); 

    } 
    } 
} 

我想驗證數值類型精度和規模。在上面的代碼中,我可以驗證22的長度,但我不能驗證小數點後只允許8位數字。使用正則表達式可以解決我的問題,我不擅長它。

我嘗試使用以下命令:

var regex = [ 
     ["total_amount"], 
     ["price"], 
     ["market_value"] 

       ]; 
       for (var i = 0; i < regex.length; ++i) { 
        if (currentColumnName == regex[i].toString()) { 

         var re = /^(\d{0,22}\.\d{0,8})$/; 
         if (regex[i].match(re)) { 
          var error = (regex[i]+"is incorrect"); 
          alert(error); 
          eventArgs.set_cancel(true); 

         } 
        } 

但它仍然不驗證

+2

什麼是你遇到的問題?代碼是否會拋出任何錯誤? –

+0

它看起來像你應該使用一個對象。 '{customer_name:32,customer_address:32,price:22}' – 4castle

+0

我在問題中更新了它。代碼工作正常,以檢查長度,但我想實現數值數據類型與規模,我想能夠驗證精度和規模eg。 23.56565656 - 有效但23.565656567 - 應顯示錯誤消息 – jdag

回答

0

爲了驗證與精度和小數我用REG EX作爲我的第一種方法會處理長度不是數字數據數字數據驗證。

在下面代碼中的錯誤是 1.我是想匹配的列名,而不是數據2「匹配」是行不通的 對我,所以我用「測試」

的代碼應該是這樣

var currentRowKey = [eventArgs.get_displayText()]; 
var regex = [ 
     ["total_amount"], 
     ["price"], 
     ["market_value"] 

       ]; 
       for (var i = 0; i < regex.length; ++i) { 
        if (currentColumnName == regex[i].toString()) { 

         var re = /^(\d{0,22}\.\d{0,8})$/; 
         if (!re.test(currentRowKey)){ 
          var error = (regex[i]+"is incorrect"); 
          alert(error); 
          eventArgs.set_cancel(true); 

         } 
        } 

reg ex:對於那些只想處理十進制正數的用戶,代碼中的工作正常。

我想處理整數,+ _號碼,十進制數和空值,所以我用了以下內容:

var re = /^-?\d{0,22}(\.\d{0,8})?$/;