2011-12-12 15 views
11

मैं टेक्स्ट फ़ील्ड को केवल संख्यात्मक मानों को कैसे स्वीकार करूं? अगर मैं एक पत्र या प्रतीक दबाता हूं, तो टेक्स्ट फ़ील्ड भरना नहीं चाहिए, इसे केवल संख्याओं को ही अनुमति देना चाहिए।रेल 3 - टेक्स्ट फ़ील्ड केवल संख्यात्मक मान स्वीकार करें

क्या ऐसा करने के लिए कोई रेल तरीका है?

उत्तर

19

सर्वर साइड सत्यापित करें numericality पर:

class SomeModel 
    validates :some_column, :numericality => {:only_integer => true} 
end 

और क्लाइंट की तरफ, जावास्क्रिप्ट https://github.com/ruoso/jquery-regex-mask-plugin

$('#some_input').regexMask(/^\d+$/); 
33

उपयोग number_field_tag के माध्यम से एक इनपुट मुखौटा जोड़ने के लिए, यह एक एचटीएमएल 5 नंबर क्षेत्र उत्पन्न होगा

http://apidock.com/rails/ActionView/Helpers/FormTagHelper/number_field_tag

+0

यहां बताया गया है कि आप वेबकिट आधारित ब्राउज़र में स्टेपर्स को कैसे छिपाते हैं। http://stackoverflow.com/a/4812443/902968 –

+0

दुर्भाग्य से कुछ ब्राउज़रों में HTML5 नंबर फ़ील्ड टूटा हुआ है। यदि आप एक गैर-संख्यात्मक चार टाइप करते हैं, तो यह * प्रदर्शित करेगा, और अपमान के लिए चोट जोड़ देगा, यह मान * खाली * पर सेट करेगा, इसलिए आपका जेएस और/या सर्वर यह भी नहीं देख पाएगा कि उपयोगकर्ता ने क्या टाइप किया है। Https://code.google.com/p/chromium/issues/detail?id=304455 और https://github.com/angular/angular.js/issues/2144 – AlexChaffee

1

@ क्लाइफ़ का जवाब अच्छा है, लेकिन वह प्लगइन HTML5 type=number तत्वों के साथ काम नहीं करता है।

$("input[type=number]").keypress(function(event) { 
     if (!event.charCode) return true;   
     ch = String.fromCharCode(event.charCode); 
     return (/[\d]/.test(ch)); 
    }); 

दशमलव या अल्पविराम अनुमति देने के लिए रेगुलर एक्सप्रेशन से अधिक प्लगइन है, उदा उन की तरह लग रहे बनाने के लिए,: यहाँ कुछ त्वरित jQuery कोड है कि केवल पूर्णांकों की अनुमति देता है है https://github.com/ruoso/jquery-regex-mask-plugin/blob/master/regex-mask-plugin.js#L8:

/^((\d{1,3}(\,\d{3})*(((\,\d{0,2}))|((\.\d*)?)))|(\d+(\.\d*)?))$/ 

(ध्यान दें कि विभिन्न स्थलों, दशमलव और अल्पविराम के लिए अलग-अलग सम्मेलनों है, तो यह शायद सुरक्षित है सिर्फ अंक :-)

भी ध्यान रखें कि यह यहाँ उल्लेख क्रोम कीड़े के लिए एक समाधान नहीं है अनुमति देने के लिए :

+1

देखें मैंने 4 साल पहले इस प्रश्न से पूछा और @ क्लाइफ़ का जवाब मुझे जरूरी था ... शायद आपका जवाब रेल और एचटीएमएल 5 के साथ काम करने वाले लोगों के लिए उपयोगी है – Angelo