我是一个jscript新手,我有一个问题。
我正在编写一个脚本来验证比利时的IBAN银行帐号。我需要用搜索字符串中的位置替换一些字母,然后将此字符串转换为数字以进行模97测试。
第一部分进展顺利,但之后从字符串转换为数字,10加到我的号码。我不知道我做错了什么。
function checkIBAN()
{
var iban = crmForm.all.fp_iban.DataValue;
if (iban != null)
{
iban = iban.substring(4) + iban.substring(0, 4);
iban = iban.toUpperCase();
var searchString = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var pos;
var tmp = '';
for (x = 0; x < iban.length; x++) {
pos = searchString.search(RegExp(iban.charAt(x),'i'));
if (pos == -1)
return false;
else
tmp += pos.toString();
}
alert(tmp); // Here my value is 735320036532111490
var nr =parseInt(tmp);
alert(nr); // Now my value seems to be 735320036532111500
alert(nr % 97);
if (nr % 97 != 1)
{
alert('IBAN number is not correct !');
}
}
}
答案 0 :(得分:2)
是的,735320036532111490只是存储在int中的值太大了。它总是圆润的:
alert(735320036532111490 / 10);
// alerts 73532003653211150
答案 1 :(得分:0)
使用parseInt时始终指定基数。
var nr =parseInt(tmp, 10);
参考资料:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt