שאלה: איך בJS בודקים

svoivandim

New member
שאלה: איך בJS בודקים

אם בשדא מסויים המשתמש הקליד נתון נומרי? תןדה מראש.
 

selalerer

New member
הפונקציה הבאה:

function isNumeric(num) { if(num="") return false; for(i=0;i<num.length;i++) { if(num.charAt(i)<"0") return false; if(num.charAt(i)>"9") return false; } return true; }​
הערך המועבר צריך להיות מחרוזת (טקסט).
 

svoivandim

New member
הבנתי,פשוט שדבתי

שבJS כמו בVBSCRIPT יש פונקציה מוכנה שבודקת (כמו ISNUMERIC ) תודה בכל זאת
 
מי אמר שאין?

אני לא מכיר את isNumeric, אבל אני מניח שזה בודק אם קלט מסוים הוא מספר או לא.
if (!isNaN(x)) { ... }​
isNaN מחזירה true כשהנתון שלה הוא *אינו* מספר.
 

selalerer

New member
זה בודק את הטיפוס של המשתנה

שנשלח אליו, אם למשל נשלחה המחרוזת "123" אז זה יחזיר false. אפשר לעשות כך בשביל לכלול מחרוזות כאלו גם ב"מספרים":
if(isNaN(Number(inputVar))​
 

veredn

New member
isNaN

הבעיה עם isNaN שגם מספר עשרוני נחשב אצלו למספר, ובד"כ לא תרצה לאפשר הכנסת מספר עשרוני
 
זה לא בעיה, זה פיצ'ר ../images/Emo13.gif

ככה הפונקציה מוגדרת -- בודק אם משהו הוא מספר או לא. מספר עשרוני זה מספר לכל דבר. אם אתה כבר יודע שמשהו הוא מספר לא בעיה כבר לבדוק אם הוא שלם או לא.
 

[eLad]

New member
כמה דרכים:

isFinite (ההפך של isNaN):
isFinite(str)​
+ לפני המשתנה:
if (+str) { /* str is numeric */ }​
הבעיה עם הנ"ל היא שמחרוזות כגון "4e2", "1.31", "0x79" ואף null (רק ב-isFinite) מתקבלות כנכונות. אם אינך מעוניין בתופעה זו, בדוק בעזרת RX קצר:
/^\d+$/.test(str); // or /^[1-9]\d*$/.test(str);​
כאשר הפקודה השניה לא מקבלת גם 0.
 
למעלה