31-03-2007, 22:09
|
|
|
חבר מתאריך: 25.08.03
הודעות: 9,114
|
|
פונקציה לבדיקת תיקנות מספר ת.ז. ישראלית
בתגובה להודעה מספר 1 שנכתבה על ידי karel_or שמתחילה ב "[בעיה[ניסיון לכתוב בדיקת תקינות תעודת זהות ב-JS"
קוד:
function ic_check(ic)
{
var ic_dig, ic_sum=0;
ic = String(ic);
if(ic.length > 9)
return false;
while(ic.length < 9)
ic = '0' + ic;
for(var i=0; i<9; i++)
{
ic_dig = i%2==0 ? ic[i]*1 : ((ic_dig=ic[i]*2)>9 ? ic_dig%10+1 : ic_dig);
ic_sum += ic_dig
}
return (ic_sum%10)==0 ? true : false;
}
כתבתי אותה בעבר ב-php, התאמתי אותה כרגע ל-js, מי שרוצה מוזמן לבדוק את תקינותה (לא ממש בדקתי אותה לאחר השינויים).
1. הפונקציה מחזירה ערך בוליאני.
2. לא חובה להזין את הספרות 0 התחיליות בקריאה לפונקציה, אך אם מזינים אותן חובה לתחום את המספר במרכאות מכיון שאחרת המספר יחושב כאוקטאלי.
3. הפונקציה בכלליותה:
שורה 3: הצהרת והגדרת משתנים.
שורה 5: המרת הערך למחרוזת, כדי למנוע שגיאה בקריאה לשיטה length.
שורות 7-8: בדיקה האם הערך גדול מ-9 ספרות והחזרת false בהתאם.
שורות 9-10: הוספת אפסים מובילים בהתאם לצורך.
שורות 12-16: לולאה העוברת על כל ספרה, מכפילה ב-1 או 2 ומבצעת את חיבור 2 הספרות (אם המספר גדול מ-9) בהתאמה ובסופה מחברת את הערך לערך הקודם.
שורה 18: בדיקה האם הערך שהתקבל מתחלק ל-10 עם שלמים או לא והחזרת ערך בוליאני בהתאם.
|