我在asp中创建了一个datagrid。网格链接到这个表,它有几列数字数据类型(22,8)。我将这些字段作为可编辑字段,因此我试图验证其精度和规模。 目前我有这个方法适用于varchar数据类型:
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);
}
}
但它仍未验证
答案 0 :(得分:0)
为了精确和规模地验证数值数据,我使用了reg ex作为我的第一个方法来处理长度而不是数值数据验证。
以下代码中的错误是 我试图匹配列名而不是数据 2.“匹配”对我不起作用所以我使用了“test”
代码应该像
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})?$/;