如何将此功能转换为AngularJS
指令?
我想让它实时验证用户输入。但即使我试图在控制器中使用它作为常规函数,我也会收到错误:
“错误:pesel.substring不是函数”
function decode(pesel)
{
var year=parseInt(pesel.substring(0,2),10);
var month = parseInt(pesel.substring(2,4),10)-1;
var day = parseInt(pesel.substring(4,6),10);
if(month>80) {
year = year + 1800;
month = month - 80;
}
else if(month > 60) {
year = year + 2200;
month = month - 60;
}
else if (month > 40) {
year = year + 2100;
month = month - 40;
}
else if (month > 20) {
year = year + 2000;
month = month - 20;
}
else {
year += 1900;
}
var birthday=new Date();
birthday.setFullYear(year, month, day);
var weights = [9,7,3,1,9,7,3,1,9,7];
var sum = 0
for(var i=0;i<weights.length;i++) {
sum+=(parseInt(pesel.substring(i,i+1),10) * weights[i]);
}
sum=sum % 10;
var valid=(sum===parseInt(pesel.substring(10,11),10));
//sex
if(parseInt(pesel.substring(9,10),10) % 2 === 1) {
var sex='m';
} else {
var sex='f';
}
return {valid:valid,sex:sex,date:birthday};
}
答案 0 :(得分:0)
作为Abdo stated above,您传递给函数的值pesel
可能不是字符串。
你的函数的第一行应该是:
pesel = (pesel || '').toString();
此行确保您不会对falsey变量进行字符串化,并确保pesel
实际上是一个字符串。
答案 1 :(得分:-1)
如果要验证某些输入,请考虑为此目的创建解析器/格式化程序对或验证程序的更好选项。
使用格式化程序/解析器检索生日和性别值,并使用验证程序检查值。
最佳