2016-06-14 68 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})?$/;