2016-03-19 17 views
0

Bu işlevi AngularJS yönergesine nasıl dönüştürebilirim? Kullanıcı girişini gerçek zamanlı olarak doğrulamak istiyorum. Ben bir hata alıyorum ama deniyorum bile denetleyicisi düzenli fonksiyonu olarak kullanmak:Bu işlevi Köşeli Yönergeye nasıl dönüştürebilirim

"Error: pesel.substring is not a function"

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}; 
} 
+1

büyük olasılıkla 'pesel' değişkeni bir dizgi değil, lütfen konsolunuza yazın ve sonucu bizimle paylaşın console.log (typeof (pesel)) ' –

cevap

-1

Bir ayrıştırıcı oluşturmak için daha iyi bir seçenek olarak düşünün, bazı giriş doğrulamak isterseniz/bu amaç için biçimlendirici çift veya bir doğrulayıcı.

Doğum günü ve cinsiyet değerlerini almak için biçimlendirici/ayrıştırıcıları ve değeri denetlemek için bir doğrulayıcı kullanın. En

0

Abdo stated above olarak size işlevi pesel geçirerek değeri, muhtemelen bir dize değil.

Fonksiyonunuzda ilk satır olmalıdır:

pesel = (pesel || '').toString(); 

Bu çizgi Falsey değişkenleri stringify yoktur ve pesel aslında bir dize olduğundan emin olun emin olur.

+0

Teşekkür ederim, ben kontrol ettim ve bu dize ve şimdi çalışıyor. Neden daha önce yapmadığını bilmiyorum, belki yanlış uygulamıştım. Ama yine de onu nasıl yönlendirebilir ve girişi gerçek zamanlı olarak doğrulayabilirim (kullanıcı yazarken)? – luk1

İlgili konular