如何使用javascript在textfield中逐字阅读

时间:2012-07-08 04:17:50

标签: javascript checksum verify

我想使用javascript验证新加坡NRIC, 公式是

1)例如,我想测试NRIC编号S1234567。第一个数字乘以2,第二个数字乘以7,第三个数字乘以6,第四个乘以5,第五个数字乘以4,第六个乘以3,第七个乘以2.然后将总数相加。所以,1×2 + 2×7 + 3×6 + 4×5 + 5×4 + 6×3 + 7×2 = 106。

2)如果NRIC的第一个字母以T或G开头,则将总数加4。

3)然后你将数字除以11并得到余数。一十一分之一百〇六= 9r7

4)您可以使用以下代码根据IC类型(IC中的第一个字母)获取字母表: 如果IC以S或T开始:0 = J,1 = Z,2 = I,3 = H,4 = G,5 = F,6 = E,7 = D,8 = C,9 = B,10 = A 如果IC以F或G开始:0 = X,1 = W,2 = U,3 = T,4 = R,5 = Q,6 = P,7 = N,8 = M,9 = L,10 = K

如何读取每个数字来执行公式? 提前谢谢!

3 个答案:

答案 0 :(得分:1)

string.charAt(charpos)

应该做的伎俩。

可替换地,

string.substr(charpos,1)

您也可以

string[charpos]

但建议使用上面的前两个。如果字符串为空,这将返回undefined,而其他替代方法将返回空字符串。

另一个想法是

string.split("")[charpos]

最后,还有

string.slice(charpos,1)

由于您一次只需要一个字符,我建议使用charAt

答案 1 :(得分:1)

字符串是数组,因此您可以为字母分配变量,假设您知道字符串具有固定长度,它就是这样,然后创建一个函数来评估字符并执行正确的操作:

var nric = 'S1234567'
var chars = {
  letter: nric[0],
  one: nric[1],
  ...
}

答案 2 :(得分:0)

阐述@elclanrs回答:

var nric = 'S1234567'
var numVal = 0;     for(var i = 1, bound = nric.length; i < bound; i++){
      numVal +=  parseInt(nric[i]);
    }
if(nric[0] === 'S' && numVal === 28){
    alert('ok');
}else{
    alert('wrong');
}

应该或多或少地做这个伎俩。 我相信,你可以自己成倍增长: - )