JQuery का उपयोग करके HTML इनपुटबॉक्स में केवल संख्यात्मक (0-9) की अनुमति कैसे दें?


901

मैं एक वेब पेज बना रहा हूं, जहां मेरे पास एक इनपुट टेक्स्ट फ़ील्ड है जिसमें मैं केवल संख्यात्मक वर्णों (0,1,2,3,4,5 ... 9) 0-9 की अनुमति देना चाहता हूं।

मैं jQuery का उपयोग करके यह कैसे कर सकता हूं?


73
ध्यान रखें कि आप क्लाइंट-साइड वेलिडेशन पर भरोसा नहीं कर सकते हैं - उपयोगकर्ता द्वारा जावास्क्रिप्ट बंद करने या जावास्क्रिप्ट संगत ब्राउज़र का उपयोग नहीं करने की स्थिति में आपको सर्वर पर मान्य करने की भी आवश्यकता है।
cjk

45
क्या आपने html5 पर विचार किया है? <इनपुट प्रकार = "संख्या" />। न्यूनतम और अधिकतम विशेषताओं के साथ आप इनपुट को भी प्रतिबंधित कर सकते हैं
ZX12R

5
मुझे लगता है कि आपको कीप इवेंट पर इनपुट मानों की जांच करनी चाहिए और कीकोड्स की जांच नहीं करनी चाहिए, क्योंकि कीबोर्ड में अंतरों के बारे में यह बहुत अधिक विश्वसनीय है और क्या नहीं।
रिचर्ड

13
मैं रिचर्ड से पूरी तरह सहमत हूं: कीकोड का उपयोग करें। स्वीकृत उत्तर फ्रांसीसी कीबोर्ड पर काम नहीं करता है, उदाहरण के लिए, चूंकि आपको उन कीबोर्ड पर नंबर टाइप करने के लिए "शिफ्ट" को दबाने की आवश्यकता है। कीकोड बहुत जोखिम भरा है, IMHO।
मिनीक्वार

3
@ ZX12R IE के किसी भी वर्तमान संस्करण में काम नहीं करता है। ताजा रखने के लिए अपने स्वयं के सामान पर नवीनतम कोड का उपयोग करना सभी अच्छी तरह से और अच्छा है, लेकिन यह वास्तव में लगभग किसी भी पेशेवर परियोजना के लिए एक विकल्प नहीं है। caniuse.com/#feat=input-number
एरिक

जवाबों:


1260

नोट: यह एक अद्यतन उत्तर है। नीचे दी गई टिप्पणियाँ पुराने संस्करण का उल्लेख करती हैं, जिसमें कीकोड के साथ गड़बड़ होती है।

jQuery

JSFiddle पर इसे स्वयं आज़माएं

इसके लिए कोई मूल jQuery कार्यान्वयन नहीं है, लेकिन आप <input>निम्न inputFilterप्लगइन के साथ एक पाठ के इनपुट मूल्यों को फ़िल्टर कर सकते हैं (कॉपी + पेस्ट, ड्रैग + ड्रॉप, कीबोर्ड शॉर्टकट, संदर्भ मेनू संचालन, गैर-टाइप करने योग्य कुंजी, कैरेट स्थिति, अलग-अलग का समर्थन करता है) आईई 9 के बाद से कीबोर्ड लेआउट और सभी ब्राउज़र :

// Restricts input for the set of matched elements to the given inputFilter function.
(function($) {
  $.fn.inputFilter = function(inputFilter) {
    return this.on("input keydown keyup mousedown mouseup select contextmenu drop", function() {
      if (inputFilter(this.value)) {
        this.oldValue = this.value;
        this.oldSelectionStart = this.selectionStart;
        this.oldSelectionEnd = this.selectionEnd;
      } else if (this.hasOwnProperty("oldValue")) {
        this.value = this.oldValue;
        this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
      } else {
        this.value = "";
      }
    });
  };
}(jQuery));

अब आप inputFilterइनपुट फ़िल्टर स्थापित करने के लिए प्लगइन का उपयोग कर सकते हैं :

$(document).ready(function() {
  $("#myTextBox").inputFilter(function(value) {
    return /^\d*$/.test(value);    // Allow digits only, using a RegExp
  });
});

अधिक इनपुट फ़िल्टर उदाहरणों के लिए JSField डेमो देखें । ध्यान दें कि आप अभी भी सर्वर साइड सत्यापन करना होगा!

शुद्ध जावास्क्रिप्ट (बिना jQuery के)

jQuery वास्तव में इसके लिए आवश्यक नहीं है, आप शुद्ध जावास्क्रिप्ट के साथ भी यही काम कर सकते हैं। इस जवाब को देखें

HTML 5

HTML 5 में एक देशी समाधान है <input type="number">( विनिर्देश देखें ), लेकिन ध्यान दें कि ब्राउज़र समर्थन भिन्न होता है:

  • अधिकांश ब्राउज़र केवल फॉर्म सबमिट करते समय इनपुट को मान्य करेंगे, और टाइप करते समय नहीं।
  • अधिकांश मोबाइल ब्राउज़रstep , minऔर maxविशेषताओं का समर्थन नहीं करते हैं ।
  • Chrome (संस्करण 71.0.3578.98) अभी भी उपयोगकर्ता को वर्णों eऔर Eक्षेत्र में प्रवेश करने की अनुमति देता है । यह प्रश्न भी देखें ।
  • फ़ायरफ़ॉक्स (संस्करण 64.0) और एज (EdgeHTML संस्करण 17.17134) अभी भी उपयोगकर्ता को फ़ील्ड में किसी भी पाठ को दर्ज करने की अनुमति देता है ।

W3schools.com पर इसे स्वयं आज़माएँ ।


45
धन्यवाद! event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 190 यदि आप दशमलव चाहते हैं
माइकल एल वॉटसन

9
उदाहरण के लिए txt बॉक्स में बाएँ और दाएँ तीर नेविगेशन की अनुमति देने के लिए keyCodes 37 और 39 जोड़ें: if (event.keyCkey == 46 || event.keyCode == 8 || event.keyCode == 37 || event.keyCode = || 39)
एंथनी क्वीन

22
ooo, सिर्फ हमारे परीक्षकों से इसके लिए एक मुद्दा उठाया। आपको उपयोगकर्ता को शिफ्ट को दबाए रखने और संख्यात्मक कुंजियों को मारने से रोकना होगा, अन्यथा इनपुट अनुमति देगा! @ # $% ^ & * ()
एलन राइस

6
पाली + बग की पुष्टि की। इसके अलावा, ALT + नंबर पैड बहुत कुछ भी अनुमति देता है (यानी Alt + 321 = A, Alt + 322 = B, आदि ...)। सर्वर साइड सत्यापन के लिए एक और मामला।
एंथनी क्वीन

140
मैं वास्तव में इस जवाब से असहमत हूं: यह कीकोड के साथ खेलना वास्तव में बहुत जोखिम भरा है, क्योंकि आप यह सुनिश्चित नहीं कर सकते कि कीबोर्ड लेआउट क्या है। उदाहरण के लिए, फ्रेंच कीबोर्ड पर, उपयोगकर्ताओं को नंबर टाइप करने के लिए शिफ्ट को प्रेस करना पड़ता है। तो यह कोड बिल्कुल काम नहीं करेगा। तो कृपया इस कीकोड हैक के बजाय सत्यापन के लिए जाएं।
मिनीक्वार

182

यहाँ मैं उपयोग समारोह है:

// Numeric only control handler
jQuery.fn.ForceNumericOnly =
function()
{
    return this.each(function()
    {
        $(this).keydown(function(e)
        {
            var key = e.charCode || e.keyCode || 0;
            // allow backspace, tab, delete, enter, arrows, numbers and keypad numbers ONLY
            // home, end, period, and numpad decimal
            return (
                key == 8 || 
                key == 9 ||
                key == 13 ||
                key == 46 ||
                key == 110 ||
                key == 190 ||
                (key >= 35 && key <= 40) ||
                (key >= 48 && key <= 57) ||
                (key >= 96 && key <= 105));
        });
    });
};

फिर आप इसे अपने नियंत्रण में संलग्न कर सकते हैं:

$("#yourTextBoxName").ForceNumericOnly();

2
मैं इस उपयोगी पाया, लेकिन मैं "बग" anoying पाया। जब मैं अपने iMac पर इसका इस्तेमाल करता हूं, तो यह कुछ अक्षर, जैसे और ई की अनुमति देता है। ऐसा लगता है कि पीसी पर कीपैड नंबर iMac पर अक्षर हैं और मैक कीबोर्ड नियमित संख्या के समान है। किसी को पता है कि यह मैक और पीसी दोनों पर कैसे काम करना है?
Volmar

3
कुंजी "होम", "एंड" भी काम नहीं कर रही है। यह एक बेहतर उपाय है जिसे पीटर ने सुझाया था: west-wind.com/weblog/posts/2011/Apr/22/…
bman

क्यों है एक return this.each(function() ?
powtac

2
@powtac - ताकि आप कई वस्तुओं पर .ForceNumericOnly () कॉल कर सकें। उदाहरण के लिए ... $ ("इनपुट [टाइप = 'टेक्स्ट']")। ForceNumericOnly ()
ओलिवर

1
@powtac eachसे return this.each(function()अधिक ऑब्जेक्ट को अनुमति देने के लिए के रूप में HaggleLad कहा है, और returnभाग फोन करने वाले के लिए jQuery वस्तु वापस लौटने के लिए, इस तरह के रूप चेनिंग अनुमति देने के लिए है$("input[type='text'").ForceNumericOnly().show()
जोस रुई सैंटोस

149

पंक्ति में:

<input name="number" onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')">

विनीत शैली (jQuery के साथ):

$('input[name="number"]').keyup(function(e)
                                {
  if (/\D/g.test(this.value))
  {
    // Filter non-digits from input value.
    this.value = this.value.replace(/\D/g, '');
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="number">


2
यदि उपयोगकर्ता बाईं ओर तीर कुंजी दबा रहा है तब भी यह कार्य को अंत तक ले जाता है।
फ्रॉग्ज

1
@ फ्रॉग्ज, यह प्रयास करें onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')":।
पैट्रिक फिशर

यह पूरी तरह से काम करता है, और ऊपर के विपरीत Shift + नंबर को रोकता है।
निक हार्टले

5
@ mhenry1384 यह अपेक्षित व्यवहार है। मुझे यह अच्छा फीडबैक लगता है लेकिन अगर आपको वह पसंद नहीं है, तो एक महत्वपूर्ण कोड दृष्टिकोण वह होगा जो आप खोज रहे हैं।
पैट्रिक फिशर

2
आप /[^0-9]|^0+(?!$)/gशून्य की अग्रणी श्रृंखला को रोकने के लिए संशोधित कर सकते हैं ।
जॉनी स्कोवडाल

105

आप विशुद्ध रूप से संख्यात्मक पात्रों के परीक्षण के लिए एक साधारण जावास्क्रिप्ट नियमित अभिव्यक्ति का उपयोग कर सकते हैं:

/^[0-9]+$/.test(input);

यदि इनपुट संख्यात्मक या गलत है, तो यह सही है।

या ईवेंट कीकोड के लिए, नीचे सरल उपयोग:

     // Allow: backspace, delete, tab, escape, enter, ctrl+A and .
    if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
         // Allow: Ctrl+A
        (e.keyCode == 65 && e.ctrlKey === true) || 
         // Allow: home, end, left, right
        (e.keyCode >= 35 && e.keyCode <= 39)) {
             // let it happen, don't do anything
             return;
    }

    var charValue = String.fromCharCode(e.keyCode)
        , valid = /^[0-9]+$/.test(charValue);

    if (!valid) {
        e.preventDefault();
    }

11
इस दृष्टिकोण के कार्यान्वयन के लिए मेरा जवाब देखें।
पैट्रिक फिशर

यह संख्यात्मक प्रोसेसर की जांच करने के लिए कम प्रोसेसर समय नहीं लेगा, बल्कि एक नियमित अभिव्यक्ति की जांच करेगा?
andrsnn

87

आप इस तरह से इनपुट ईवेंट पर उपयोग कर सकते हैं:

$(document).on("input", ".numeric", function() {
    this.value = this.value.replace(/\D/g,'');
});

लेकिन, यह कोड विशेषाधिकार क्या है?

  • यह मोबाइल ब्राउज़र पर काम करता है (कीडाउन और कीकोड में समस्या है)।
  • यह AJAX जेनरेट की गई सामग्री पर भी काम करता है, क्योंकि हम "ऑन" का उपयोग कर रहे हैं।
  • कीडाउन से बेहतर प्रदर्शन, उदाहरण के लिए पेस्ट इवेंट पर।

6
मुझे ऐसा लगता है कि स्वीकृत उत्तर की तुलना में यह अधिक मजबूत (और सरल) समाधान है।
जेरेमी हैरिस

यहां तक ​​कि अगर (/ \ D / g, '') का उपयोग करके और भी सरल
Alfergon

हाय, मैं कैसे संख्यात्मक मान एक साथ सुनिश्चित कर सकते हैं decimalके बीच 0.0करने के लिए 24.0मैं इसे डालने देती करने में असमर्थ हूँ.
ट्रांसफार्मर

मैं का उपयोग कर सुझाव हैthis.value = Number(this.value.replace(/\D/g, ''));
HasanG

अच्छा जवाब, आसानी से टॉगल करने की अनुमति देता है कि क्या कोई इनपुट संख्यात्मक है या
टॉगलिंग

55

लघु और मधुर - भले ही यह 30+ उत्तरों के बाद कभी ध्यान नहीं देगा;)

  $('#number_only').bind('keyup paste', function(){
        this.value = this.value.replace(/[^0-9]/g, '');
  });

5
मैं की-अप को इनपुट द्वारा प्रतिस्थापित करूंगा, अन्यथा आप दबाए गए पत्र को बनाए रख सकते हैं, फिर टेक्स्टबॉक्स से ध्यान हटाने के लिए क्लिक करें और यह पाठ को छोड़ देता है। इनपुट आश्वासन देता है कि ऐसा नहीं हो सकता है
WizLiz

रेगेक्स के लिए धन्यवाद - लेकिन यह एक बेहतर घटना हैंडलर है: $ ('# नंबर_ऑनली')। ('इनपुट प्रॉपर्टीचेंज', फंक्शन () {this.value = this.value.replace (/ ^ 0-9] / जी, '');});
ब्रैड

3
FYI करें - सवाल इसके लिए नहीं पूछा गया था, लेकिन यह दशमलव के लिए अनुमति नहीं देता (उदाहरण। 12.75)। "कीप" के बजाय "इनपुट" को बांधना एक अलग UX के लिए उनके चरित्र को देखने के बजाय एक चिकनी UX के लिए बनाता है, फिर हटा दिया गया।
पॉल

44

जावास्क्रिप्ट फ़ंक्शन का उपयोग करें NNN ,

if (isNaN($('#inputid').val()))

if (isNaN (document.getElementById ('inputid'))। val ())।

if (isNaN(document.getElementById('inputid').value))

अपडेट: और यहाँ एक अच्छा लेख है जिसके बारे में बात कर रहा हूँ लेकिन jQuery का उपयोग कर रहा है: HTML पाठ बॉक्स में संख्यात्मक मूल्यों पर इनपुट को प्रतिबंधित करना


40
अच्छी तरह से ... JQuery का उपयोग कर रहे अपने उदाहरण के भाग को छोड़कर "JQuery का उपयोग नहीं कर रहा है" ...
GalacticCowboy

document.getElementById('inputid').val()यार .. वो अभी भी jquery है। .val()एक jquery चीज है। उपयोग.value
एमपीएन


हाय, मैं कैसे संख्यात्मक मान एक साथ सुनिश्चित कर सकते हैं decimalके बीच 0.0करने के लिए 24.0मैं इसे डालने देती करने में असमर्थ हूँ.
ट्रांसफार्मर

28
$(document).ready(function() {
    $("#txtboxToFilter").keydown(function(event) {
        // Allow only backspace and delete
        if ( event.keyCode == 46 || event.keyCode == 8 ) {
            // let it happen, don't do anything
        }
        else {
            // Ensure that it is a number and stop the keypress
            if (event.keyCode < 48 || event.keyCode > 57 ) {
                event.preventDefault(); 
            }   
        }
    });
});

स्रोत: http://snipt.net/GerryEng/jquery-making-textfield-only-accept-numeric-values


6
वाह, खाली "अगर" ब्लॉक और जादू नंबर दोनों! मैंने अभी अपने मुंह में थोडा पैदा किया। : D लेकिन गंभीरता से, यह सब परेशानी तब क्यों होती है जब आप केवल regex /^ के खिलाफ इनपुट से मिलान कर सकते हैं। और '8' क्या दर्शाता है?
एलन मूर

@ एलन: हाहा, मुझे कोई पता नहीं है - मैंने सीधे स्रोत से नकल की। मैं इसके बजाय "if (event.keyCode! = 46 && event.keyCode! = 8)" लिखूंगा, या जैसा आपने कहा, regex का उपयोग करें। मुझे लगता है कि 8 नष्ट कुंजी का प्रतिनिधित्व करता है।
इवर

4
उदाहरण के लिए Shift + 8 दबाने की कोशिश करें - आपकी मान्यता *
एंटोन

यह अच्छा है। यह बहुत बेहतर होगा, यदि यह Shift कुंजी + संख्या (विशेष वर्ण जैसे! @ # $% ^ ..) को संभालता है
Shyju

27

मैं अपनी आंतरिक सामान्य js फ़ाइल में इसका उपयोग करता हूं। मैं बस किसी भी इनपुट के लिए कक्षा को जोड़ता हूं जिसे इस व्यवहार की आवश्यकता है।

$(".numericOnly").keypress(function (e) {
    if (String.fromCharCode(e.keyCode).match(/[^0-9]/g)) return false;
});

1
अच्छा, सुरुचिपूर्ण और उपयोगी कोड! धन्यवाद। लेकिन आपको कीप और कीडड इवेंट्स जोड़ना होगा।
सिल्वियो डेलगाडो

25

मेरे लिए एक सरल है

jQuery('.plan_eff').keyup(function () {     
  this.value = this.value.replace(/[^1-9\.]/g,'');
});

7
बस यह सुनिश्चित करने की आवश्यकता है कि आप this.value.replace(/[^0-9\.]/g,'');ओपी की 0-9 की आवश्यकताओं को शामिल करने के लिए उपयोग करते हैं
चालिस

24

इतना जटिल क्यों? HTML5 पैटर्न विशेषता होने के कारण आपको jQuery की भी आवश्यकता नहीं है:

<input type="text" pattern="[0-9]*">

अच्छी बात यह है कि यह मोबाइल उपकरणों पर एक संख्यात्मक कीबोर्ड लाता है, जो कि jQuery का उपयोग करने से बेहतर है।


2
इसके लिए बहुत अधिक वोट होना चाहिए। यदि कुछ भी हो, तो आप गैर- html5 ब्राउज़रों के लिए फ़ॉल बैक रेगेक्स भी जोड़ सकते हैं - लेकिन डेटा का सत्यापन सर्वर-साइड वैसे भी किया जाना चाहिए।
मार्कस

ऐसा लगता है कि यह अब तक अधिकांश ब्राउज़रों द्वारा अच्छी तरह से समर्थित है, इसलिए आधुनिक समर्थन इतना महत्वपूर्ण नहीं है: caniuse.com/#search=pattern Safari इस साइट पर आंशिक रूप से समर्थित के रूप में सूचीबद्ध होने के बावजूद बहुत अच्छी तरह से काम करता है। कोशिश करो!
अतिथि

@guest इसके लिए आपका बहुत-बहुत धन्यवाद। सबसे तेज और सबसे आसान जवाब! मेरी राय में शीर्ष उत्तर।
बाइनरीजियो

18

आप इसे बहुत ही सरल समाधान का उपयोग करके कर सकते हैं

$("input.numbers").keypress(function(event) {
  return /\d/.test(String.fromCharCode(event.keyCode));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="numbers" name="field_name" />

मैंने समाधान के लिए इस लिंक का उल्लेख किया है । यह पूरी तरह से काम करता है !!!


हो सकता है कि अनुमति देने के लिए यह बेहतर है / ENDdpg\./। दशमलव संख्या
Zango

यह क्रोम में परफेक्ट काम करता है। लेकिन मोज़िला
फायरफ़ॉक्स

हाय, मैं कैसे संख्यात्मक मान एक साथ सुनिश्चित कर सकते हैं decimalके बीच 0.0करने के लिए 24.0मैं इसे डालने देती करने में असमर्थ हूँ.
ट्रांसफार्मर

कॉपी पेस्ट के साथ काम नहीं करता
mr


14

एचटीएमएल 5 में पैटर्न विशेषता एक नियमित अभिव्यक्ति निर्दिष्ट करती है कि तत्व के मूल्य के खिलाफ जांच की जाती है।

  <input  type="text" pattern="[0-9]{1,3}" value="" />

नोट: पैटर्न विशेषता निम्नलिखित इनपुट प्रकारों के साथ काम करती है: पाठ, खोज, यूआरएल, टेल, ईमेल और पासवर्ड।

  • [0-9] को किसी भी नियमित अभिव्यक्ति की स्थिति से बदला जा सकता है।

  • {1,3} यह 1 का न्यूनतम प्रतिनिधित्व करता है और अधिकतम 3 अंकों में प्रवेश किया जा सकता है।


हाय, मैं कैसे संख्यात्मक मान एक साथ सुनिश्चित कर सकते हैं decimalके बीच 0.0करने के लिए 24.0मैं इसे डालने देती करने में असमर्थ हूँ.
ट्रांसफार्मर

1
@transformer यह <इनपुट प्रकार = "संख्या" पैटर्न = "[0-9] + ([\ _,] [0-9] +)?" step = "0.01">
vickisys

11

JQuery.validate का उपयोग करके कुछ काफी सरल

$(document).ready(function() {
    $("#formID").validate({
        rules: {
            field_name: {
                numericOnly:true
            }
        }
    });
});

$.validator.addMethod('numericOnly', function (value) {
       return /^[0-9]+$/.test(value);
}, 'Please only enter numeric values (0-9)');

8

समारोह को दबाएंनॉनमैरिक इनपुट (घटना) {

    if( !(event.keyCode == 8                                // backspace
        || event.keyCode == 46                              // delete
        || (event.keyCode >= 35 && event.keyCode <= 40)     // arrow keys/home/end
        || (event.keyCode >= 48 && event.keyCode <= 57)     // numbers on keyboard
        || (event.keyCode >= 96 && event.keyCode <= 105))   // number on keypad
        ) {
            event.preventDefault();     // Prevent character input
    }
}

हाय, मैं कैसे संख्यात्मक मान एक साथ सुनिश्चित कर सकते हैं decimalके बीच 0.0करने के लिए 24.0मैं इसे डालने देती करने में असमर्थ हूँ.
ट्रांसफार्मर

8

मैं एक बहुत अच्छा और सरल समाधान आया जो उपयोगकर्ता को पाठ का चयन करने या अन्य समाधानों की तरह चिपकाने से रोक नहीं सकता है। jQuery शैली :)

$("input.inputPhone").keyup(function() {
    var jThis=$(this);
    var notNumber=new RegExp("[^0-9]","g");
    var val=jThis.val();

    //Math before replacing to prevent losing keyboard selection 
    if(val.match(notNumber))
    { jThis.val(val.replace(notNumber,"")); }
}).keyup(); //Trigger on page load to sanitize values set by server

अरे मैं यह प्रयोग कर रहा हूँ, लेकिन जो मैं देख रहा हूँ, वह उसे १.२ या ३.४५५ की तरह डॉट करने की अनुमति देता है
विवेक

8

आप इस जावास्क्रिप्ट फ़ंक्शन का उपयोग कर सकते हैं:

function maskInput(e) {
    //check if we have "e" or "window.event" and use them as "event"
        //Firefox doesn't have window.event 
    var event = e || window.event 

    var key_code = event.keyCode;
    var oElement = e ? e.target : window.event.srcElement;
    if (!event.shiftKey && !event.ctrlKey && !event.altKey) {
        if ((key_code > 47 && key_code < 58) ||
            (key_code > 95 && key_code < 106)) {

            if (key_code > 95)
                 key_code -= (95-47);
            oElement.value = oElement.value;
        } else if(key_code == 8) {
            oElement.value = oElement.value;
        } else if(key_code != 9) {
            event.returnValue = false;
        }
    }
}

और आप इसे अपने टेक्स्टबॉक्स पर इस तरह से बाँध सकते हैं:

$(document).ready(function() {
    $('#myTextbox').keydown(maskInput);
});

मैं उत्पादन में उपरोक्त का उपयोग करता हूं, और यह पूरी तरह से काम करता है, और यह क्रॉस-ब्राउज़र है। इसके अलावा, यह jQuery पर निर्भर नहीं करता है, इसलिए आप इसे अपने टेक्स्टबॉक्स में इनलाइन जावास्क्रिप्ट के साथ बांध सकते हैं:

<input type="text" name="aNumberField" onkeydown="javascript:maskInput()"/>

यह तब विफल होता है जब कोई इनपुट में गैर-संख्यात्मक पाठ चिपकाता है। किसी भी तरह हम इसे कैसे दूर कर सकते हैं? इस पर अपने मन को लपेट नहीं सकते।
किरण रूत आर।

7

मुझे लगता है कि यह सभी की मदद करेगा

  $('input.valid-number').bind('keypress', function(e) { 
return ( e.which!=8 && e.which!=0 && (e.which<48 || e.which>57)) ? false : true ;
  })

आप कीपैड इनपुट के बारे में भूल रहे हैं। इसमें शामिल होगा कि:if(event.which!=8 && event.which!=0 && (event.which<48 || event.which>57) && (event.which<96 || event.which>105)) return;
tomvo

6

मैंने ऊपर @ user261922 के पोस्ट के आधार पर मेरा लिखा, थोड़ा संशोधित किया गया ताकि आप सभी का चयन कर सकें, टैब और एक ही पेज पर कई "संख्या केवल" फ़ील्ड को संभाल सकते हैं।

var prevKey = -1, prevControl = '';
$(document).ready(function () {
    $(".OnlyNumbers").keydown(function (event) {
        if (!(event.keyCode == 8                                // backspace
            || event.keyCode == 9                               // tab
            || event.keyCode == 17                              // ctrl
            || event.keyCode == 46                              // delete
            || (event.keyCode >= 35 && event.keyCode <= 40)     // arrow keys/home/end
            || (event.keyCode >= 48 && event.keyCode <= 57)     // numbers on keyboard
            || (event.keyCode >= 96 && event.keyCode <= 105)    // number on keypad
            || (event.keyCode == 65 && prevKey == 17 && prevControl == event.currentTarget.id))          // ctrl + a, on same control
        ) {
            event.preventDefault();     // Prevent character input
        }
        else {
            prevKey = event.keyCode;
            prevControl = event.currentTarget.id;
        }
    });
});

6

यहाँ एक त्वरित समाधान है जो मैंने कुछ समय पहले बनाया था। आप मेरे लेख में इसके बारे में अधिक पढ़ सकते हैं:

http://ajax911.com/numbers-numeric-field-jquery/

$("#textfield").bind("keyup paste", function(){
    setTimeout(jQuery.proxy(function() {
        this.val(this.val().replace(/[^0-9]/g, ''));
    }, $(this)), 0);
});

6

आप टैब को अनुमति देना चाहेंगे:

$("#txtboxToFilter").keydown(function(event) {
    // Allow only backspace and delete
    if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 ) {
        // let it happen, don't do anything
    }
    else {
        // Ensure that it is a number and stop the keypress
        if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
            event.preventDefault(); 
        }   
    }
});

6

यहाँ एक उत्तर दिया गया है कि jQuery UI विजेट फैक्टरी का उपयोग करता है। आप वर्णों को आसानी से अनुमति दे सकते हैं।

$('input').numberOnly({
    valid: "0123456789+-.$,"
});

यह संख्या, संख्या संकेत और डॉलर की मात्रा की अनुमति देगा।

$.widget('themex.numberOnly', {
    options: {
        valid : "0123456789",
        allow : [46,8,9,27,13,35,39],
        ctrl : [65],
        alt : [],
        extra : []
    },
    _create: function() {
        var self = this;

        self.element.keypress(function(event){
            if(self._codeInArray(event,self.options.allow) || self._codeInArray(event,self.options.extra))
            {
                return;
            }
            if(event.ctrlKey && self._codeInArray(event,self.options.ctrl))
            {
                return;
            }
            if(event.altKey && self._codeInArray(event,self.options.alt))
            {
                return;
            }
            if(!event.shiftKey && !event.altKey && !event.ctrlKey)
            {
                if(self.options.valid.indexOf(String.fromCharCode(event.keyCode)) != -1)
                {
                    return;
                }
            }
            event.preventDefault(); 
        });
    },

    _codeInArray : function(event,codes) {
        for(code in codes)
        {
            if(event.keyCode == codes[code])
            {
                return true;
            }
        }
        return false;
    }
});

क्या यह $ और फिर + - प्रथम या प्रथम / द्वितीय अक्षर और फिर केवल 1 दशमलव बिंदु सुनिश्चित करता है?
गोर्डन

6

यह अटूट लगता है।

// Prevent NULL input and replace text.
$(document).on('change', 'input[type="number"]', function (event) {
    this.value = this.value.replace(/[^0-9\.]+/g, '');
    if (this.value < 1) this.value = 0;
});

// Block non-numeric chars.
$(document).on('keypress', 'input[type="number"]', function (event) {
    return (((event.which > 47) && (event.which < 58)) || (event.which == 13));
});

5

यह सुनिश्चित करने की आवश्यकता है कि आपके पास संख्यात्मक कीपैड और टैब कुंजी भी काम कर रही है

 // Allow only backspace and delete
            if (event.keyCode == 46 || event.keyCode == 8  || event.keyCode == 9) {
                // let it happen, don't do anything
            }
            else {
                // Ensure that it is a number and stop the keypress
                if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105)) {

                }
                else {
                    event.preventDefault();
                }
            }

5

मैं थोड़ी मदद करना चाहता था, और मैंने अपना संस्करण, onlyNumbersफ़ंक्शन बनाया ...

function onlyNumbers(e){
    var keynum;
    var keychar;

    if(window.event){  //IE
        keynum = e.keyCode;
    }
    if(e.which){ //Netscape/Firefox/Opera
        keynum = e.which;
    }
    if((keynum == 8 || keynum == 9 || keynum == 46 || (keynum >= 35 && keynum <= 40) ||
       (event.keyCode >= 96 && event.keyCode <= 105)))return true;

    if(keynum == 110 || keynum == 190){
        var checkdot=document.getElementById('price').value;
        var i=0;
        for(i=0;i<checkdot.length;i++){
            if(checkdot[i]=='.')return false;
        }
        if(checkdot.length==0)document.getElementById('price').value='0';
        return true;
    }
    keychar = String.fromCharCode(keynum);

    return !isNaN(keychar);
}

बस इनपुट टैग में जोड़ें "... इनपुट ... आईडी =" मूल्य "onkeydown =" केवल रिटर्न (घटना) "..." और आप कर रहे हैं;)


5

मैं भी जवाब देना चाहूंगा :)

    $('.justNum').keydown(function(event){
        var kc, num, rt = false;
        kc = event.keyCode;
        if(kc == 8 || ((kc > 47 && kc < 58) || (kc > 95 && kc < 106))) rt = true;
        return rt;
    })
    .bind('blur', function(){
        num = parseInt($(this).val());
        num = isNaN(num) ? '' : num;
        if(num && num < 0) num = num*-1;
        $(this).val(num);
    });

बस यही ... सिर्फ नंबर। :) लगभग यह सिर्फ 'कलंक' के साथ काम कर सकता है, लेकिन ...


5

यह दर्ज करने का सरल तरीका है कि मान दर्ज है:

var checknumber = $('#textbox_id').val();

    if(jQuery.isNumeric(checknumber) == false){
        alert('Please enter numeric value');
        $('#special_price').focus();
        return;
    }

5

बस इस विधि को Jquery में लागू करने की आवश्यकता है और आप केवल अपना नंबर स्वीकार करने के लिए अपने टेक्स्टबॉक्स को मान्य कर सकते हैं।

function IsNumberKeyWithoutDecimal(element) {    
var value = $(element).val();
var regExp = "^\\d+$";
return value.match(regExp); 
}

इस समाधान को यहां देखें


5

आप HTML5 नंबर इनपुट आज़मा सकते हैं:

<input type="number" placeholder="enter the number" min="0" max="9">

यह इनपुट टैग तत्व अब केवल 0 से 9 के बीच का मूल्य लेगा क्योंकि न्यूनतम विशेषता 0 पर सेट है और अधिकतम विशेषता 9 पर सेट है।

यात्रा के बारे में अधिक जानकारी के लिए http://www.w3schools.com/html/html_form_input_types.asp

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.