2009-04-27 7 views
7

मैं एक टेक्स्टबॉक्स से जावास्क्रिप्ट के माध्यम से एक मूल्य खींच रहा हूँ। यदि टेक्स्टबॉक्स खाली है, तो यह NaN देता है। यदि यह शून्य, खाली, आदि है तो मैं एक खाली स्ट्रिंग वापस करना चाहता हूं।किसी टेक्स्टबॉक्स से पूर्णांक मान प्राप्त करना, यह जांचना कि यह NaN या null आदि है या नहीं?

मैं क्या जांचूं? if(NAN = tb.value)?

+0

अधिक विशिष्ट कृपया रहें: यह पाठ बॉक्स (एक पाठ इनपुट, पाठ क्षेत्र का चयन करें सूची या क्या) क्या है? नहीं 'पाठ बॉक्स' मूल्य (खाली है या नहीं) मेरी जानकारी के लिए अपने आप में NaN देता है। – KooiInc

+0

पाठ बॉक्स वापसी NaN करता है या आप इसे पार्स फ्लोट करने के लिए/पूर्णांक पहले (जो मतलब यह होगा कि parseFloat/इंट) रिटर्न NaN है। –

+0

आपका मतलब है: अगर // (तुलना के लिए दो के बराबर होती है) की [जावास्क्रिप्ट में एक नंबर करने के स्ट्रिंग परिवर्तित] – Jay

उत्तर

16

एचएम, यहां कुछ ख़राब है।

कौन सा ब्राउजर खाली टेक्स्टबॉक्स NaN लौटाता है? मैंने ऐसा कभी नहीं देखा है, और मैं इसे पुन: उत्पन्न नहीं कर सकता।

टेक्स्ट बॉक्स का मान वास्तव में एक स्ट्रिंग है। एक खाली पाठ बॉक्स एक खाली स्ट्रिंग देता है!

ओह, और अगर कुछ NaN है की जाँच करने के लिए, आप का उपयोग करना चाहिए:

if (isNaN(tb.value)) 
{ 
    ... 
} 

नोट: isNaN() समारोह कुछ भी है कि एक नंबर के रूप में पार्स नहीं किया जा सकता, रिक्त स्ट्रिंग के अलावा के लिए true देता है। इसका मतलब है कि यह संख्यात्मक इनपुट (regexes से बहुत आसान) के लिए एक अच्छा जांच है:

if (tb.value != "" && !isNaN(tb.value)) 
{ 
    // It's a number 
    numValue = parseFloat(tb.value); 
} 
0

एक चीज जो आप कर सकते हैं वह टेक्स्टबॉक्स के मूल्य पर एक रेगेक्स चेक है और सुनिश्चित करें कि यह एक स्वीकृत संख्या के प्रारूप को फिट करता है, और फिर यदि यह प्रारूप आपकी प्रक्रिया को निष्पादित करता है, अन्यथा खाली स्ट्रिंग लौटाएं।

संपादित:

var anum=/(^\d+$)/; 

if (!anum.test(document.getElementById("<%=txtConceptOrderValue.ClientID %>").value)) 
{ 
    alert("Order Value must be a valid integer"); 
    document.getElementById("<%=txtConceptOrderValue.ClientID %>").focus(); 
    return false; 
} 

संपादित 2:: यह कुछ कोड मैं मेरे सामने है से एक उदाहरण है (सबसे अच्छा नियमित अभिव्यक्ति नहीं हो सकता है) मैं भी ध्यान देना चाहिए कि मैं कर रहा हूँ ASP.NET का उपयोग कर यही कारण है कि मेरे पास टेक्स्टबॉक्स तक पहुंचने का थोड़ा सा शानदार तरीका है। आपके नियमित जावास्क्रिप्ट मामले में यह अव्यवस्थित नहीं हो सकता है।

+0

कि वास्तव में इस उत्तर के लिए थोड़ा संशोधित है।यदि आप संशोधन इतिहास की जांच करते हैं तो आप देखेंगे कि कोड का मूल भाग दशमलव मानों की जांच करना था। मुझे इसे इन्ट्स के लिए काम करने के लिए संशोधित करना पड़ा: पी – TheTXI

2

आप इसे इस तरह से भी कर सकते हैं:

var number = +input.value; 
if (input.value === "" || number != number) 
{ 
    // not a number 
} 

NaN कुछ भी नहीं के बराबर है, जो अपने आप भी नहीं।

आप का उपयोग करने के लिए + स्ट्रिंग से संख्या में बदलने के लिए, सामान्य parseInt उपयोग करें, लेकिन याद हमेशा एक आधार

var number = parseInt(input.value, 10) 

अन्यथा "08" क्योंकि जावास्क्रिप्ट सोचता है कि यह एक है हो जाता है 0 देने के लिए पसंद नहीं है, तो ऑक्टल संख्या।

1

मान लिया जाये कि आप इनपुट पाठ बॉक्स के लिए एक संदर्भ है:

function getInteger(input) { 
    if(!input || !input.value) return ""; 

    var val = parseInt(input.value, 10); 

    if(isNaN(val)) return ""; 
    else return val; 
} 
संबंधित मुद्दे

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