टेक्स्टबॉक्स में इनपुट को प्रतिबंधित करना: केवल संख्या और दशमलव बिंदु की अनुमति देना


107

मैं टेक्स्ट-बॉक्स में इनपुट को कैसे प्रतिबंधित कर सकता हूं ताकि यह केवल संख्याओं और दशमलव बिंदु को स्वीकार करे?


11
उनका मूल प्रश्न महान था, अमर ... !!! इसे क्यों बदला ..? ;)
स्पिकैटिड

14
क्यों डाउन वोट? आदमी यहाँ नया है, उसे अपने खोज, plz को बेहतर बनाने में मदद करें।
लेक्सु

अय्यप्पन। अब्बलगन, पोस्ट में कुछ उदाहरण जोड़ें :) क्या ये सभी तार आपके लिए सही हैं? 192 192.168 192.168.0.1
लाक-बी

मैं इसे धन्यवाद मिल गया .. केवल 22.22 फॉर्मेट को भी txtbox में केवल 5 char की अनुमति देनी चाहिए ...
TinTin

के साथ समस्या क्या है, isNaN(this.textbox.value)??
सैम ००

जवाबों:


158

<HTML>
  <HEAD>
    <SCRIPT language=Javascript>
       <!--
       function isNumberKey(evt)
       {
          var charCode = (evt.which) ? evt.which : evt.keyCode;
          if (charCode != 46 && charCode > 31 
            && (charCode < 48 || charCode > 57))
             return false;

          return true;
       }
       //-->
    </SCRIPT>
  </HEAD>
  <BODY>
    <INPUT id="txtChar" onkeypress="return isNumberKey(event)" 
           type="text" name="txtChar">
  </BODY>
</HTML>

यह वास्तव में काम करता है!


1
&& चारकोड> 31 की आवश्यकता क्यों है?
contactmatt

2
कैरेक्टर 31 यूनिट सेपरेटर कोड है। बहुत अधिक संख्या और पाठ 32 और उच्चतर के बीच हैं। कोड पढ़ता है कि चरित्र कोड दर्ज किया जाना चाहिए दशमलव नहीं है और 31 (यूनिट सेपरेटर) से अधिक है, लेकिन 48 (संख्या शून्य) से कम है या 57 (संख्या नौ) से अधिक है, इसे स्वीकार नहीं करते हैं।
पॉल विलियम्स

9
if (charCode == 46 && evt.srcElement.value.split ('।') लंबाई> 1) {वापसी झूठी; } यह निजी तौर पर कई होगा ।'... :):
अनीश करुणाकरन

10
इसमें कीपैड नंबर और पीरियड शामिल हैं:&& charCode != 190 && charCode != 110 && (charCode > 105 || charCode < 96)
mga

1
यह एक से अधिक स्वीकार कर रहा है '। [period] ', जो गलत है मुझे लगता है।
अक्षय चावला

26
form.onsubmit = function(){
    return textarea.value.match(/^\d+(\.\d+)?$/);
}

क्या यह आप देख रहे हैं?

मुझे उम्मीद है यह मदद करेगा।

संपादित करें: मैंने अपना उदाहरण ऊपर संपादित किया ताकि केवल एक अवधि हो सके, कम से कम एक अंक से पहले और उसके बाद कम से कम एक अंक हो।


1
यह सोचें कि यह '99 .23.65.86 'को भी मान्य करेगा .... लेकिन मुझे लगता है कि सवाल एकल डॉट के साथ' 56987.32 'को मान्य करने के बारे में था .....
स्पिकटाइड

मुझे लगता है कि पोस्टर ने अपने मूल प्रश्न को संपादित किया है। अद्यतन के लिए धन्यवाद!
ताऊ

1
मैं बेहतर /^\d+([\.,]\d+)?$/ प्रयोग करेंगे अंतर्राष्ट्रीय नंबर का समर्थन करने के लिए (जहाँ अल्पविराम डॉट के बजाय प्रयोग किया जाता है)
FDIM

26

स्वीकृत समाधान पूर्ण नहीं है, क्योंकि आप कई में प्रवेश कर सकते हैं। '', उदाहरण के लिए 24 .... 22..22। कुछ छोटे संशोधनों के साथ यह इरादा के अनुसार काम करेगा:

<html>

<head>
  <script type="text/javascript">
    function isNumberKey(txt, evt) {
      var charCode = (evt.which) ? evt.which : evt.keyCode;
      if (charCode == 46) {
        //Check if the text already contains the . character
        if (txt.value.indexOf('.') === -1) {
          return true;
        } else {
          return false;
        }
      } else {
        if (charCode > 31 &&
          (charCode < 48 || charCode > 57))
          return false;
      }
      return true;
    }
  </script>
</head>

<body>
  <input type="text" onkeypress="return isNumberKey(this, event);" />
</body>

</html>


मैंने आपके उत्तर का उपयोग किया लेकिन मैंने इस onkeypress को संशोधित किया = "वापसी isNumberKey (यह, घटना);"
बिल्बो बैगिन्स

हाँ मुझे लगता है कि यह घटना को टाइप करने के लिए वैकल्पिक है, क्योंकि यह दोनों मामलों के साथ काम करता है, धन्यवाद
हसन मोकदाद

हमें कुछ महत्वपूर्ण स्ट्रोक बचाए .. tq
इरफ

केवल एक समस्या यह है कि आप पाठ में पेस्ट कॉपी कर सकते हैं। इनपुट तत्व को जोड़ना ondrop="return false;" onpaste="return false;" oncontextmenu="return false;"पर्याप्त प्रतीत होता है
क्लैमचोडा

ड्रैग-एंड-ड्रॉप या कॉपी-एंड-पेस्ट का उपयोग करने से रोकने के लिए यह प्रत्येक उपयोगकर्ता के लिए एक गलत सेवा है।
ह्यूबर्ट ग्रॉस्स्कोविआक

19

यहां एक और समाधान है जो दशमलव संख्या के लिए अनुमति देता है और दशमलव के बाद अंकों को 2 दशमलव स्थानों तक सीमित करता है।

function isNumberKey(evt, element) {
  var charCode = (evt.which) ? evt.which : event.keyCode
  if (charCode > 31 && (charCode < 48 || charCode > 57) && !(charCode == 46 || charCode == 8))
    return false;
  else {
    var len = $(element).val().length;
    var index = $(element).val().indexOf('.');
    if (index > 0 && charCode == 46) {
      return false;
    }
    if (index > 0) {
      var CharAfterdot = (len + 1) - index;
      if (CharAfterdot > 3) {
        return false;
      }
    }

  }
  return true;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" id="rate" placeholder="Billing Rate" required onkeypress="return isNumberKey(event,this)">


लगभग सही .. आप की अंतिम स्थिति ifएक "सी" पूंजीकृत याद आ रही है।
DNKROZ

सुंदर समाधान !!
माइकल मरे

Beutiful। मेरे लिए पूरी तरह से काम करता है।
नूर अहमद

ध्यान दें कि यह समाधान कई डॉट्स ( .), डैश ( -) और अक्षर को अनुमति देता है eजब पाठ चिपकाया जाता है या फ़ील्ड पर गिरा दिया जाता है। HTML तत्व क्रोम में डिफ़ॉल्ट रूप से संख्या बढ़ाने और घटाने के लिए दो तीर भी दिखाएगा। डिक्रिमेंटिंग बटन शून्य से नीचे गिरने की अनुमति देता है।
ह्यूबर्ट ग्रौजसकोविआक

12

यहां प्रस्तुत सभी समाधान एकल प्रमुख घटनाओं का उपयोग कर रहे हैं। यह बहुत ही त्रुटिपूर्ण है क्योंकि copy'n'paste या drag'n'drop का उपयोग करके इनपुट भी दिया जा सकता है। इसके अलावा कुछ समाधान गैर-चरित्र कुंजियों जैसे ctrl+c, Pos1आदि के उपयोग को प्रतिबंधित करते हैं ।

मैं आपको हर कुंजी प्रेस की जांच करने के बजाय सुझाव देता हूं कि क्या परिणाम आपकी उम्मीदों के संबंध में मान्य है।

var validNumber = new RegExp(/^\d*\.?\d*$/);
var lastValid = document.getElementById("test1").value;
function validateNumber(elem) {
  if (validNumber.test(elem.value)) {
    lastValid = elem.value;
  } else {
    elem.value = lastValid;
  }
}
<textarea id="test1" oninput="validateNumber(this);" ></textarea>

oninputपाठ क्षेत्र में कुछ बदलने और प्रस्तुत किए जाने से ठीक पहले, घटना को ट्रिगर किया गया है।

आप जो भी संख्या प्रारूप स्वीकार करना चाहते हैं, उसके लिए आप RegEx का विस्तार कर सकते हैं। यह एकल कुंजी प्रेस के लिए जाँच करने की तुलना में कहीं अधिक बनाए रखने योग्य और विस्तार योग्य है।


यह सबसे सुरुचिपूर्ण समाधान है!
jkd

4

क्या आप कुछ इस तरह की तलाश में हैं?

   <HTML>
   <HEAD>
   <SCRIPT language=Javascript>
      <!--
      function isNumberKey(evt)
      {
         var charCode = (evt.which) ? evt.which : event.keyCode
         if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57))
            return false;

         return true;
      }
      //-->
   </SCRIPT>
   </HEAD>
   <BODY>
      <INPUT id="txtChar" onkeypress="return isNumberKey(event)" type="text" name="txtChar">
   </BODY>
  </HTML>

4

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

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

कृपया यहां काम कर रहे डेमो देखें


2

जैसे मैंने किया था वैसे ही किसी के लिए भी, यहाँ एक jQuery 1.10.2 संस्करण है जो मैंने लिखा है जो मेरे लिए बहुत अच्छा काम कर रहा है।

/***************************************************
* Only allow numbers and one decimal in text boxes
***************************************************/
$('body').on('keydown keyup keypress change blur focus paste', 'input[type="text"]', function(){
    var target = $(this);

    var prev_val = target.val();

    setTimeout(function(){
        var chars = target.val().split("");

        var decimal_exist = false;
        var remove_char = false;

        $.each(chars, function(key, value){
            switch(value){
                case '0':
                case '1':
                case '2':
                case '3':
                case '4':
                case '5':
                case '6':
                case '7':
                case '8':
                case '9':
                case '.':
                    if(value === '.'){
                        if(decimal_exist === false){
                            decimal_exist = true;
                        }
                        else{
                            remove_char = true;
                            chars[''+key+''] = '';
                        }
                    }
                    break;
                default:
                    remove_char = true;
                    chars[''+key+''] = '';
                    break;
            }
        });

        if(prev_val != target.val() && remove_char === true){
            target.val(chars.join(''))
        }
    }, 0);
});

2

दशमलव को पूरी तरह से मान्य करने के लिए @ रिबिस्को के शानदार जवाब के लिए एक छोटा सा सुधार।

function isNumberKey(evt) {
    debugger;
    var charCode = (evt.which) ? evt.which : event.keyCode;
    if (charCode == 46 && evt.srcElement.value.split('.').length>1) {
        return false;
    }
    if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57))
        return false;
    return true;
}

यह बहुत अच्छा है। हालांकि, मैं इसे 2 दशमलव बिंदु तक सीमित करना चाहूंगा, वैसे भी ऐसा करने के लिए?
नोडफेक्ट

2

यदि आप इसे फ्लोट मान के लिए चाहते हैं,

यहाँ फ़ंक्शन का उपयोग कर रहा हूं

<HTML>

<HEAD>
  <SCRIPT language=Javascript>
    <!--
    function check(e, value) {
      //Check Charater
      var unicode = e.charCode ? e.charCode : e.keyCode;
      if (value.indexOf(".") != -1)
        if (unicode == 46) return false;
      if (unicode != 8)
        if ((unicode < 48 || unicode > 57) && unicode != 46) return false;
    }
    //-->
  </SCRIPT>
</HEAD>

<BODY>
  <INPUT id="txtChar" onkeypress="return check(event,value)" type="text" name="txtChar">
</BODY>

</HTML>


1
inputelement.onchange= inputelement.onkeyup= function isnumber(e){
    e= window.event? e.srcElement: e.target;
    while(e.value && parseFloat(e.value)+''!= e.value){
            e.value= e.value.slice(0, -1);
    }
}

1
function integerwithdot(s, iid){
        var i;
        s = s.toString();
        for (i = 0; i < s.length; i++){
            var c;
            if (s.charAt(i) == ".") {
            } else {
                c = s.charAt(i);
            }
            if (isNaN(c)) {
                c = "";
                for(i=0;i<s.length-1;i++){
                    c += s.charAt(i);
                }
                document.getElementById(iid).value = c;
                return false;
            }
        }
        return true;
    }

1

यहाँ स्क्रिप्ट है कि कैस आपकी मदद करते हैं:

<script type="text/javascript">
// price text-box allow numeric and allow 2 decimal points only
function extractNumber(obj, decimalPlaces, allowNegative)
{
    var temp = obj.value;

    // avoid changing things if already formatted correctly
    var reg0Str = '[0-9]*';
    if (decimalPlaces > 0) {
        reg0Str += '\[\,\.]?[0-9]{0,' + decimalPlaces + '}';
    } else if (decimalPlaces < 0) {
        reg0Str += '\[\,\.]?[0-9]*';
    }
    reg0Str = allowNegative ? '^-?' + reg0Str : '^' + reg0Str;
    reg0Str = reg0Str + '$';
    var reg0 = new RegExp(reg0Str);
    if (reg0.test(temp)) return true;

    // first replace all non numbers
    var reg1Str = '[^0-9' + (decimalPlaces != 0 ? '.' : '') + (decimalPlaces != 0 ? ',' : '') + (allowNegative ? '-' : '') + ']';
    var reg1 = new RegExp(reg1Str, 'g');
    temp = temp.replace(reg1, '');

    if (allowNegative) {
        // replace extra negative
        var hasNegative = temp.length > 0 && temp.charAt(0) == '-';
        var reg2 = /-/g;
        temp = temp.replace(reg2, '');
        if (hasNegative) temp = '-' + temp;
    }

    if (decimalPlaces != 0) {
        var reg3 = /[\,\.]/g;
        var reg3Array = reg3.exec(temp);
        if (reg3Array != null) {
            // keep only first occurrence of .
            //  and the number of places specified by decimalPlaces or the entire string if decimalPlaces < 0
            var reg3Right = temp.substring(reg3Array.index + reg3Array[0].length);
            reg3Right = reg3Right.replace(reg3, '');
            reg3Right = decimalPlaces > 0 ? reg3Right.substring(0, decimalPlaces) : reg3Right;
            temp = temp.substring(0,reg3Array.index) + '.' + reg3Right;
        }
    }

    obj.value = temp;
}
function blockNonNumbers(obj, e, allowDecimal, allowNegative)
{
    var key;
    var isCtrl = false;
    var keychar;
    var reg;
    if(window.event) {
        key = e.keyCode;
        isCtrl = window.event.ctrlKey
    }
    else if(e.which) {
        key = e.which;
        isCtrl = e.ctrlKey;
    }

    if (isNaN(key)) return true;

    keychar = String.fromCharCode(key);

    // check for backspace or delete, or if Ctrl was pressed
    if (key == 8 || isCtrl)
    {
        return true;
    }

    reg = /\d/;
    var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
    var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false;
    var isFirstC = allowDecimal ? keychar == ',' && obj.value.indexOf(',') == -1 : false;
    return isFirstN || isFirstD || isFirstC || reg.test(keychar);
}
function blockInvalid(obj)
{
    var temp=obj.value;
    if(temp=="-")
    {
        temp="";
    }

    if (temp.indexOf(".")==temp.length-1 && temp.indexOf(".")!=-1)
    {
        temp=temp+"00";
    }
    if (temp.indexOf(".")==0)
    {
        temp="0"+temp;
    }
    if (temp.indexOf(".")==1 && temp.indexOf("-")==0)
    {
        temp=temp.replace("-","-0") ;
    }
    if (temp.indexOf(",")==temp.length-1 && temp.indexOf(",")!=-1)
    {
        temp=temp+"00";
    }
    if (temp.indexOf(",")==0)
    {
        temp="0"+temp;
    }
    if (temp.indexOf(",")==1 && temp.indexOf("-")==0)
    {
        temp=temp.replace("-","-0") ;
    }
    temp=temp.replace(",",".") ;
    obj.value=temp;
}
// end of price text-box allow numeric and allow 2 decimal points only
</script>

<input type="Text" id="id" value="" onblur="extractNumber(this,2,true);blockInvalid(this);" onkeyup="extractNumber(this,2,true);" onkeypress="return blockNonNumbers(this, event, true, true);">

1

मान लें कि Income
जब आपको अपने क्षेत्र को मान्य करने की आवश्यकता हो, तो अपने टेक्स्टबॉक्स क्षेत्र का नाम इस मान्य विधि को कॉल करें:

function validate() {
    var currency = document.getElementById("Income").value;
      var pattern = /^[1-9]\d*(?:\.\d{0,2})?$/ ;
    if (pattern.test(currency)) {
        alert("Currency is in valid format");
        return true;
    } 
        alert("Currency is not in valid format!Enter in 00.00 format");
        return false;
}

1

@ विद्रोह के उत्तर का विस्तार। यह नीचे दिया गया कोड केवल संख्याओं और एकल '' की अनुमति देगा। (अवधि) पाठ बॉक्स में।

function isNumberKey(evt) {
        var charCode = (evt.which) ? evt.which : event.keyCode;
        if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
            return false;
        } else {
            // If the number field already has . then don't allow to enter . again.
            if (evt.target.value.search(/\./) > -1 && charCode == 46) {
                return false;
            }
            return true;
        }
    }

1

बेहतर समाधान

var checkfloats = function(event){
    var charCode = (event.which) ? event.which : event.keyCode;
    if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57))
        return false;

    if(event.target.value.indexOf('.') >=0 && charCode == 46)
        return false;

    return true;
}

0

@Rebisco उत्तर से शुरू:

function count_appearance(mainStr, searchFor) {
    return (mainStr.split(searchFor).length - 1);
}
function isNumberKey(evt)
{
    $return = true;
    var charCode = (evt.which) ? evt.which : event.keyCode;
    if (charCode != 46 && charCode > 31
            && (charCode < 48 || charCode > 57))
        $return = false;
    $val = $(evt.originalTarget).val();
    if (charCode == 46) {
        if (count_appearance($val, '.') > 0) {
            $return = false;
        }
        if ($val.length == 0) {
            $return = false;
        }
    }
    return $return;
}

केवल इस प्रारूप को अनुमति देता है: 123123123 [.121213]

यहां डेमो करें


0

आशा है कि यह आपके लिए काम करेगा।

<input type="text" onkeypress="return chkNumeric(event)" />

<script>
    function chkNumeric(evt) {
        evt = (evt) ? evt : window.event;
        var charCode = (evt.which) ? evt.which : evt.keyCode;
        if (charCode > 31 && (charCode < 48 || charCode > 57)) {
            if (charCode == 46) { return true; }
            else { return false; }
        }
        return true;
    }
</script>

0

निम्नलिखित कोड ने मेरे लिए काम किया

"ऑनकीप्रेस" घटना के साथ इनपुट बॉक्स निम्नानुसार है

<input type="text" onkeypress="return isNumberKey(this,event);" />

फ़ंक्शन "isNumberKey" इस प्रकार है

function isNumberKey(txt, evt) {
  var charCode = (evt.which) ? evt.which : evt.keyCode;
  if (charCode == 46) {
    //Check if the text already contains the . character
    if (txt.value.indexOf('.') === -1) {
        return true;
    } else {
        return false;
    }
  } else {
    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;
  }
  return true;
}


0

मैंने देखा कि यहां दिए गए सभी उत्तरों के लिए, चीजें काम नहीं कर रही हैं यदि हम टेक्स्टबॉक्स में पाठ के कुछ हिस्से का चयन करते हैं और उस हिस्से को अधिलेखित करने का प्रयास करते हैं। इसलिए मैंने नीचे दिए गए फ़ंक्शन को संशोधित किया:

    <HTML>
  <HEAD>
    <SCRIPT language=Javascript>
       <!--
       function isNumberKey(evt)
       {
         var charCode = (evt.which) ? evt.which : event.keyCode;

if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57))
{
        return false;
}
 if (charCode == 46 && evt.srcElement.value.split('.').length>1 )
    {

        return false;

    } 

 if(evt.srcElement.selectionStart<evt.srcElement.selectionEnd)
    {
          return true;
    }

  if(evt.srcElement.value.split('.').length>1 && evt.srcElement.value.split('.')[1].length==2)
  {

     return false;
  }


    return true;
       }


       //-->
    </SCRIPT>
  </HEAD>
  <BODY>
    <INPUT id="txtChar" onkeypress="return isNumberKey(event)" 
           type="text" name="txtChar">
  </BODY>
</HTML>

0

दशमलव संख्या के लिए और बिंदु के बाद दशमलव के लिए 2 स्थानों के साथ ऋणात्मक संख्याओं की अनुमति भी ... मैंने फ़ंक्शन को इसमें संशोधित किया है:

<input type="text" id="txtSample" onkeypress="return isNumberKey(event,this)"/>



function isNumberKey(evt, element){

        var charCode = (evt.which) ? evt.which : event.keyCode
        if (charCode > 31 && (charCode < 48 || charCode > 57) && !(charCode == 46 || charCode == 8 || charCode == 45))
            return false;
        else {
            var len = $(element).val().length;

            // Validation Point
            var index = $(element).val().indexOf('.');
            if ((index > 0 && charCode == 46) || len == 0 && charCode == 46) {
                return false;
            }
            if (index > 0) {
                var CharAfterdot = (len + 1) - index;
                if (CharAfterdot > 3) {
                    return false;
                }
            }

            // Validating Negative sign
            index = $(element).val().indexOf('-');
            if ((index > 0 && charCode == 45) || (len > 0 && charCode == 45)) {
                return false;
            }
        }
        return true;
    }

0

टेक्स्ट-बॉक्स में इनपुट को प्रतिबंधित करने का वैकल्पिक तरीका ताकि यह केवल संख्याओं को स्वीकार करे और दशमलव बिंदु html इनपुट के अंदर जावास्क्रिप्ट का उपयोग करे। यह मेरे लिए काम करता है:

<input type="text" class="form-control" id="price" name="price" placeholder="Price" 
vrequired onkeyup="this.value=this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1')">

--Accepts--

9

9.99

--स्वीकार न करें--

9.99.99

एबीसी


0
function isNumberKey(evt)
{
    var charCode = (evt.which) ? evt.which : evt.keyCode;

    if(charCode==8 || charCode==13|| charCode==99|| charCode==118 || charCode==46)
    {    
        return true;  
    }

    if (charCode > 31 && (charCode < 48 || charCode > 57))
    {   
        return false; 
    }
    return true;
}

यह केवल संख्यात्मक अनुमति देगा और आपको "डालने देगा।" दशमलव के लिए।


0
<script type="text/javascript">

    function isNumberKey(evt) {
        var charCode = (evt.which) ? evt.which : event.keyCode;
        if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57))
            return false;

        return true;
    }

</script>

@Html.EditorFor(model => model.Orderids, new { id = "Orderids", Onkeypress=isNumberKey(event)})

यह ठीक काम करता है।


0

शुद्ध-जावास्क्रिप्ट नमूना लाइव डेमो के साथ सबसे अच्छा और काम कर समाधान: https://jsfiddle.net/manoj2010/ygkr8989/

<script>
function removeCommas(nStr) {
    if (nStr == null || nStr == "")
        return ""; 
    return nStr.toString().replace(/,/g, "");
}

function NumbersOnly(myfield, e, dec,neg)
{        
    if (isNaN(removeCommas(myfield.value)) && myfield.value != "-") {
        return false;
    }
    var allowNegativeNumber = neg || false;
    var key;
    var keychar;

    if (window.event)
        key = window.event.keyCode;
    else if (e)
        key = e.which;
    else
        return true;
    keychar = String.fromCharCode(key);
    var srcEl = e.srcElement ? e.srcElement : e.target;    
    // control keys
    if ((key == null) || (key == 0) || (key == 8) ||
                (key == 9) || (key == 13) || (key == 27))
        return true;

    // numbers
    else if ((("0123456789").indexOf(keychar) > -1))
        return true;

    // decimal point jump
    else if (dec && (keychar == ".")) {
        //myfield.form.elements[dec].focus();
        return srcEl.value.indexOf(".") == -1;        
    }

    //allow negative numbers
    else if (allowNegativeNumber && (keychar == "-")) {    
        return (srcEl.value.length == 0 || srcEl.value == "0.00")
    }
    else
        return false;
}
</script>
<input name="txtDiscountSum" type="text" onKeyPress="return NumbersOnly(this, event,true)" /> 


0

इस मुद्दे पर खुद काम करना, और यही मुझे अब तक मिला है। यह अधिक या कम काम करता है, लेकिन नए मूल्य की जांच के कारण माइनस को जोड़ना असंभव है। साथ ही एक हजार विभाजक के रूप में अल्पविराम को केवल दशमलव की अनुमति नहीं देता है।

यह सही नहीं है, लेकिन कुछ विचार दे सकते हैं।

app.directive('isNumber', function () {
            return function (scope, elem, attrs) {
                elem.bind('keypress', function (evt) {
                    var keyCode = (evt.which) ? evt.which : event.keyCode;
                    var testValue = (elem[0].value + String.fromCharCode(keyCode) + "0").replace(/ /g, ""); //check ignores spaces
                    var regex = /^\-?\d+((\.|\,)\d+)?$/;                        
                    var allowedChars = [8,9,13,27,32,37,39,44,45, 46] //control keys and separators             

                   //allows numbers, separators and controll keys and rejects others
                    if ((keyCode > 47 && keyCode < 58) || allowedChars.indexOf(keyCode) >= 0) {             
                        //test the string with regex, decline if doesn't fit
                        if (elem[0].value != "" && !regex.test(testValue)) {
                            event.preventDefault();
                            return false;
                        }
                        return true;
                    }
                    event.preventDefault();
                    return false;
                });
            };
        });

की अनुमति देता है:

11 11 .245 (कंट्रोलर में कलंक 1111.245 पर स्वरूपित)

11,44

-१२३.१२३

-1 014

0123 (123 पर धब्बा पर स्वरूपित)

अनुमति नहीं देता:

! @ # $ / *

एबीसी

11.11.1

11,11.1

0.42


0
<input type="text" onkeypress="return isNumberKey(event,this)">

<script>
   function isNumberKey(evt, obj) {

            var charCode = (evt.which) ? evt.which : event.keyCode
            var value = obj.value;
            var dotcontains = value.indexOf(".") != -1;
            if (dotcontains)
                if (charCode == 46) return false;
            if (charCode == 46) return true;
            if (charCode > 31 && (charCode < 48 || charCode > 57))
                return false;
            return true;
        }


</script>

0

मुझे पता है कि यह प्रश्न बहुत पुराना है लेकिन फिर भी हमें अक्सर ऐसी आवश्यकताएं मिलती हैं। कई उदाहरण हैं, हालांकि कई एक सरल निहितार्थ के लिए बहुत अधिक क्रिया या जटिल प्रतीत होते हैं ।

यह https://jsfiddle.net/vibs2006/rn0fvxuk/ देखें और इसमें सुधार करें (यदि आप कर सकते हैं)। यह IE, फ़ायरफ़ॉक्स, क्रोम और एज ब्राउज़र पर काम करता है।

यहां काम करने का कोड है।

        
        function IsNumeric(e) {
        var IsValidationSuccessful = false;
        console.log(e.target.value);
        document.getElementById("info").innerHTML = "You just typed ''" + e.key + "''";
        //console.log("e.Key Value = "+e.key);
        switch (e.key)
         {         
             case "1":
             case "2":
             case "3":
             case "4":
             case "5":
             case "6":
             case "7":
             case "8":
             case "9":
             case "0":
             case "Backspace":             
                 IsValidationSuccessful = true;
                 break;
                 
						 case "Decimal":  //Numpad Decimal in Edge Browser
             case ".":        //Numpad Decimal in Chrome and Firefox                      
             case "Del": 			// Internet Explorer 11 and less Numpad Decimal 
                 if (e.target.value.indexOf(".") >= 1) //Checking if already Decimal exists
                 {
                     IsValidationSuccessful = false;
                 }
                 else
                 {
                     IsValidationSuccessful = true;
                 }
                 break;

             default:
                 IsValidationSuccessful = false;
         }
         //debugger;
         if(IsValidationSuccessful == false){
         
         document.getElementById("error").style = "display:Block";
         }else{
         document.getElementById("error").style = "display:none";
         }
         
         return IsValidationSuccessful;
        }
Numeric Value: <input type="number" id="text1" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;" /><br />
    <span id="error" style="color: Red; display: none">* Input digits (0 - 9) and Decimals Only</span><br />
    <div id="info"></div>


0

मैंने oninputकीबोर्ड पेस्टिंग, माउस पेस्टिंग और कुंजी स्ट्रोक के मुद्दे को संभालने के लिए इस घटना से निपटने के लिए चुना । दशमलव या पूर्णांक सत्यापन को इंगित करने के लिए सही या गलत पास करें।

यह मूल रूप से तीन एक लाइनरों में तीन चरण हैं। यदि आप दशमलव को छोटा नहीं करना चाहते हैं तो तीसरे चरण पर टिप्पणी करें। गोलाई के लिए समायोजन तीसरे चरण में भी किया जा सकता है।

// Example Decimal usage;
// <input type="text"  oninput="ValidateNumber(this, true);" />
// Example Integer usage:
// <input type="text"  oninput="ValidateNumber(this, false);" />
function ValidateNumber(elm, isDecimal) {
    try {

        // For integers, replace everything except for numbers with blanks.
        if (!isDecimal) 
            elm.value = elm.value.replace(/[^0-9]/g, ''); 
        else {
            // 1. For decimals, replace everything except for numbers and periods with blanks.
            // 2. Then we'll remove all leading ocurrences (duplicate) periods
            // 3. Then we'll chop off anything after two decimal places.

            // 1. replace everything except for numbers and periods with blanks.
            elm.value = elm.value.replace(/[^0-9.]/g, '');

            //2. remove all leading ocurrences (duplicate) periods
            elm.value = elm.value.replace(/\.(?=.*\.)/g, '');

            // 3. chop off anything after two decimal places.
            // In comparison to lengh, our index is behind one count, then we add two for our decimal places.
            var decimalIndex = elm.value.indexOf('.');
            if (decimalIndex != -1) { elm.value = elm.value.substr(0, decimalIndex + 3); }
        }
    }
    catch (err) {
        alert("ValidateNumber " + err);
    }
}

0
<input type="text" onkeypress='return event.charCode >= 48 && event.charCode <= 57'>

आप ASCII मूल्य सीमा निर्दिष्ट करके उपयोगकर्ता द्वारा दर्ज किए जाने वाले मूल्यों को प्रतिबंधित कर सकते हैं।
उदाहरण : संख्यात्मक मानों के लिए 48 से 57 (0 से 9)

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