2012-04-17 30 views
5

लंबी कहानी छोटी, मैं एक फोन क्षेत्र को सत्यापित करने की कोशिश कर रहा था। Ive क्षेत्र में " " की जाँच के लिए isNaN और parseInt जोड़ा है, लेकिन है किparseInt हमेशा NaN देता है?

यह true..what के लिए नीचे कभी नहीं की पुष्टि करता है मैं याद आ रही है कहा?

if(isNaN(parseInt(phone))){ 
     error.text("Sorry but this phone field requires numbers only"); 
     return false; 
    } else { 
    return true; 

    } 

यह हमेशा विफल रहता है ... जब भी मैं क्षेत्र में कोई संख्या दर्ज करता हूं और सबमिट करता हूं तब भी यह सच नहीं पढ़ता है। मुझे हमेशा त्रुटि mssg मिलता है।

संपादित करें: मैं एक रूप से इनपुट मानों का परीक्षण कर रहा हूँ, phone क्षेत्र का नाम है।

+0

मेरे लिए काम करता है, उदा। फोन = "5" के साथ। आपके परीक्षण इनपुट मूल्य क्या हैं? – Bergi

+0

हाँ क्षमा करें, मैं एक फॉर्म – somdow

+0

से इनपुट इनपुट vals का परीक्षण कर रहा हूं आपको प्रश्न में भी अपना HTML शामिल करना चाहिए। इससे हमें डीबग करने में मदद मिल सकती है। – webnesto

उत्तर

7

parseInt समय पर थोड़ा अजीब है:

> parseInt("123-456-789") 
123 

सौभाग्य से आप शायद के साथ अपने मामले का समाधान कर सकते हैं:

> Number("123-456-789") 
NaN 
10

विभिन्न नंबरों के लिए जे एस तार coerse करने के तरीके, और उनके परिणामों:

Results of converting various strings using the above techniques http://phrogz.net/JS/string_to_number.png

मैं व्यक्तिगत रूप से *1 का उपयोग के रूप में यह टाइप करने के लिए कम है, लेकिन अभी भी (एकल के विपरीत बाहर खड़ा है +), और या तो मुझे देता है कि उपयोगकर्ता ने टाइप किया है या पूरी तरह से विफल रहता है। मैं केवल parseInt() का उपयोग करता हूं जब मैं जानता हूं कि अनदेखा करने के अंत में गैर-संख्यात्मक सामग्री होगी, या जब मुझे गैर-बेस -10 स्ट्रिंग को पार्स करने की आवश्यकता होगी।

संपादित: अपनी टिप्पणी के आधार पर, phone.val() का उपयोग कर अगर यह तो तय हो गई

  1. आप jQuery उपयोग कर रहे थे (जो आप कभी नहीं उल्लेख किया है, और होना चाहिए), और
  2. आप वास्तव में था/एक है jQuery ऑब्जेक्ट, एक या अधिक डोम तत्वों को लपेटना (शायद केवल एक)।

जब भी आप var foo = $('…'); करते हैं तो foo परिवर्तनीय संदर्भ एक या अधिक तत्वों की एक jQuery वस्तु का संदर्भ देता है। आप var fooEl = foo[0]; या var fooEl = foo.get(0); के माध्यम से इस से पहला वास्तविक डीओएम तत्व प्राप्त कर सकते हैं ... लेकिन फिर भी आप अभी भी में एक डोम तत्व है और इसकी कोई विशेष संपत्ति नहीं है।

फॉर्म इनपुट के लिए, आपको DOM तत्व से .value प्राप्त करने की आवश्यकता है, जो कि jQuery .val() विधि है।

संबंधित मुद्दे