এইচটিএমএল ইনপুটবক্সে jQuery ব্যবহার করে কেবলমাত্র সংখ্যা (0-9) কীভাবে অনুমতি দেবেন?


901

আমি একটি ওয়েব পৃষ্ঠা তৈরি করছি যেখানে আমার কাছে একটি ইনপুট পাঠ্য ক্ষেত্র রয়েছে যেখানে আমি কেবলমাত্র (0,1,2,3,4,5 ... 9) 0-9 এর মতো সংখ্যার অক্ষরগুলিকে অনুমতি দিতে চাই।

আমি কীভাবে jQuery ব্যবহার করে এটি করতে পারি?


73
মনে রাখবেন যে আপনি ক্লায়েন্ট-পার্শ্বের বৈধতার উপর নির্ভর করতে পারবেন না - যদি ব্যবহারকারী জাভাস্ক্রিপ্ট বন্ধ করে দেয় বা জাভাস্ক্রিপ্টের সামঞ্জস্যপূর্ণ ব্রাউজার ব্যবহার না করে তবে আপনাকে সার্ভারেও বৈধতা দিতে হবে।
সিজেকে

45
আপনি কি এইচটিএমএল 5 বিবেচনা করেছেন? <ইনপুট টাইপ = "সংখ্যা" />। সর্বনিম্ন এবং সর্বাধিক বৈশিষ্ট্যের সাহায্যে আপনি
ইনপুটও

5
আমি মনে করি আপনার কীপড ইভেন্টের ইনপুট মানগুলি পরীক্ষা করা উচিত এবং কী-কোডগুলি পরীক্ষা করা উচিত নয়, কারণ এটি কীবোর্ডের পার্থক্যের তুলনায় অনেক বেশি নির্ভরযোগ্য এবং কী নয়।
রিচার্ড

13
আমি রিচার্ডের সাথে পুরোপুরি একমত: কীকোড ব্যবহার করবেন না । গৃহীত উত্তরটি ফরাসি কীবোর্ডগুলিতে কাজ করে না, উদাহরণস্বরূপ, যেহেতু আপনাকে এই কী-বোর্ডগুলিতে সংখ্যা টাইপ করার জন্য "শিফট" টিপতে হবে। আইএমএইচও, কীকডগুলি খুব ঝুঁকিপূর্ণ।
MiniQuark

3
@ জেডএক্স 12 আর আই এর বর্তমান সংস্করণগুলিতে কাজ করে না। টাটকা রাখতে আপনার নিজের স্টাটে সর্বশেষ কোডটি ব্যবহার করা ভাল এবং ভাল, তবে এটি প্রায় কোনও পেশাদার প্রকল্পের জন্য কোনও বিকল্প নয়। caniuse.com/#feat=input-number
এরিক

উত্তর:


1259

দ্রষ্টব্য: এটি একটি আপডেট করা উত্তর। নীচের মন্তব্যগুলিতে একটি পুরানো সংস্করণ উল্লেখ করা হয়েছে যা কীকোডগুলির সাথে চারপাশে গোলযোগ করেছিল।

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
  });
});

আরও ইনপুট ফিল্টার উদাহরণগুলির জন্য জেএসফিডাল ডেমো দেখুন । এছাড়াও নোট করুন যে আপনাকে এখনও সার্ভার সাইডের বৈধতা অবশ্যই করতে হবে!

খাঁটি জাভাস্ক্রিপ্ট (jQuery ছাড়াই)

jQuery আসলে এর জন্য প্রয়োজন হয় না, আপনি খাঁটি জাভাস্ক্রিপ্ট দিয়ে একই জিনিসটি করতে পারেন। এই উত্তর দেখুন ।

এইচটিএমএল 5

এইচটিএমএল 5 এর একটি নেটিভ সমাধান রয়েছে <input type="number">( স্পেসিফিকেশনটি দেখুন ), তবে নোট করুন যে ব্রাউজার সমর্থনটি পরিবর্তিত হয়:

  • বেশিরভাগ ব্রাউজার কেবল ফর্মটি জমা দেওয়ার সময় ইনপুটটিকে বৈধতা দেবে, টাইপ করার সময় নয়।
  • বেশিরভাগ মোবাইল ব্রাউজারগুলি এবং step, সমর্থন করে নাminmax বৈশিষ্ট্যাবলী।
  • ক্রোম (সংস্করণ 71.0.3578.98) এখনও ব্যবহারকারীকে অক্ষর eএবং Eক্ষেত্রের মধ্যে প্রবেশ করতে দেয়। আরো দেখুন এই প্রশ্নের
  • ফায়ারফক্স (64৪.০ সংস্করণ) এবং এজ (এজএইচটিএমএল সংস্করণ 17.17134) এখনও ব্যবহারকারীকে ক্ষেত্রের মধ্যে কোনও পাঠ্য প্রবেশ করার অনুমতি দেয় ।

W3schools.com এ নিজে চেষ্টা করুন ।


45
ধন্যবাদ! ইভেন্ট.কি কোড == 46 || ইভেন্ট.কি কোড == 8 || ইভেন্ট.কি কোড == 190 যদি আপনি দশমিক চান
মাইকেল এল ওয়াটসন

9
টেক্সট বাক্সে বাম এবং ডান তীর নেভিগেশনকে অনুমোদনের জন্য কী-কোড 37 এবং 39 যুক্ত করুন উদাহরণস্বরূপ: যদি (ইভেন্ট.keyCode == 46 || ইভেন্ট.কি কোড == 8 || ইভেন্ট.কি কোড == 37 || ইভেন্ট.কি কোড == 39)
অ্যান্টনি কুইন

22
ওও, স্রেফ আমাদের পরীক্ষকগণের কাছ থেকে এটির জন্য একটি ইস্যু তুলেছি। আপনাকে ব্যবহারকারীকে শিফট চেপে ধরে এবং সংখ্যা কীগুলি আঘাত করা থেকে বিরত রাখতে হবে, অন্যথায় ইনপুটটি অনুমতি দেবে! @ # $% ^ & * ()
অ্যালেন রাইস

6
শিফট + বাগটি নিশ্চিত করেছেন। এছাড়াও, ALT + সংখ্যা প্যাড বেশ কয়েকটি কিছুর অনুমতি দেয় (যেমন Alt + 321 = A, Alt + 322 = B, ইত্যাদি ...)। সার্ভার সাইডের বৈধতার জন্য আর একটি মামলা।
অ্যান্টনি কুইন

140
আমি এই উত্তরটির সাথে সত্যই একমত নই: এটি কীবোর্ডের সাথে খেলে সত্যই ঝুঁকিপূর্ণ, কারণ কীবোর্ডের লেআউটটি কী তা আপনি নিশ্চিত হতে পারবেন না। উদাহরণস্বরূপ, ফরাসি কীবোর্ডগুলিতে, ব্যবহারকারীদের সংখ্যা টাইপ করার জন্য শিফট টিপতে হবে। সুতরাং এই কোডটি মোটেই কাজ করবে না। সুতরাং দয়া করে এই কীকোড হ্যাকের পরিবর্তে বৈধতার জন্য যান।
MiniQuark

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 "বাগ" পেয়েছি। আমি যখন এটি আমার আইম্যাকটিতে ব্যবহার করি তখন এটি একটি এবং ই এর মতো কিছু চিঠি দেয়। দেখে মনে হচ্ছে পিসিতে কীপ্যাড নম্বরগুলি আইম্যাকের অক্ষর এবং ম্যাক কীবোর্ডগুলি নিয়মিত সংখ্যার মতোই। যে কেউ ম্যাক এবং পিসি উভয় এটি কিভাবে কাজ করতে জানেন?
ভলমার

3
কী "হোম", "শেষ" খুব বেশি কাজ করছে না। এটি একটি আরও ভাল সমাধান যা পিতর পরামর্শ দিয়েছেন: ওয়েস্ট
উইন্ড

সেখানে কেন return this.each(function() ?
Powtac

2
@ পোয়াটাক - যাতে আপনি কল করতে পারেন। একাধিক বস্তুতে ফার্স্নুমারিক অ্যানলি ()। উদাহরণস্বরূপ ... $ ("ইনপুট [টাইপ = 'পাঠ্য']") Force ফোর্সনুমারিক অ্যানলি ()
অলিভার পারমাইন

1
@powtac eachথেকে return this.each(function()একাধিক বস্তু করার অনুমতি যেমন HaggleLad বলেন, এবং returnঅংশ কলারের কাছে jQuery এর অবজেক্ট ফিরতে যেমন chaining অনুমতি দেওয়া$("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
@phrogz, এই চেষ্টা করে দেখুন: onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')"
প্যাট্রিক ফিশার

এটি নিখুঁতভাবে কাজ করে এবং শিফট + নম্বরটিকে উপরের মতগুলি থেকে বিরত রাখে।
নিক হার্টলি

5
@ mhenry1384 এটি প্রত্যাশিত আচরণ। আমি এটি ভাল প্রতিক্রিয়া বলে মনে করি তবে আপনি যদি এটি পছন্দ না করেন তবে একটি মূল কোড পদ্ধতির আপনি যা খুঁজছেন তা হবে।
প্যাট্রিক ফিশার

2
/[^0-9]|^0+(?!$)/gশীর্ষস্থানীয় শূন্য রোধ করতে আপনি পরিবর্তন করতে পারেন mod
জনি স্কোভডাল

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
এই পদ্ধতির প্রয়োগের জন্য আমার উত্তর দেখুন।
প্যাট্রিক ফিশার

একটি নিয়মিত এক্সপ্রেশন চেক করার পরিবর্তে সংখ্যাসূচক কীটিপ্রেস পরীক্ষা করার জন্য কম প্রসেসরের সময় লাগবে না?
অ্যান্ডারসন

87

আপনি ইনপুট ইভেন্টে এটি ব্যবহার করতে পারেন:

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

কিন্তু, এই কোড সুবিধা কি?

  • এটি মোবাইল ব্রাউজারগুলিতে কাজ করে (কীডাউন এবং কী কোডে সমস্যা আছে)।
  • এটি এজেএক্স উত্পাদিত সামগ্রীতেও কাজ করে, কারণ আমরা "চালু" ব্যবহার করি।
  • কীডাউন এর চেয়ে ভাল পারফরম্যান্স, উদাহরণস্বরূপ পেস্ট ইভেন্টে।

6
আমি মনে করি এটি গৃহীত উত্তরের চেয়ে অনেক বেশি শক্তিশালী (এবং সহজ) সমাধান।
জেরেমি হ্যারিস

এমনকি সহজ (/ \ ডি / ছ, '') প্রতিস্থাপন ব্যবহার করা হয় তবে
Alfergon

হাই, আমি সাংখ্যিক মান একটি সঙ্গে নিশ্চিত করতে পারে decimalমধ্যে 0.0থেকে 24.0আমি এটা ঢুকতে করতে পারছি না.
ট্রান্সফরমার

আমি ব্যবহার করার পরামর্শ দেবthis.value = Number(this.value.replace(/\D/g, ''));
হাসানজি

উত্তম উত্তর, টগলিং ক্লাসের মাধ্যমে কোনও ইনপুট সংখ্যাগত কিনা তা সহজেই টগল করতে দেয়
রক্লোস

55

সংক্ষিপ্ত এবং মিষ্টি - এমনকি যদি এটি 30+ উত্তর পরে খুব বেশি মনোযোগ না পায়;)

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

5
আমি ইনপুট দ্বারা কীআপটি প্রতিস্থাপন করব, অন্যথায় আপনি চাপ দেওয়া একটি চিঠি বজায় রাখতে পারেন তারপর পাঠ্যবক্সের বাইরে ফোকাসটি নিতে ক্লিক করুন এবং এটি পাঠ্যটিকে যেমন আছে তেমন রেখে দেবেন। ইনপুট আশ্বাস দেয় যে এটি ঘটতে পারে না
উইজলিজ

রেজেক্সের জন্য ধন্যবাদ - তবে এটি একটি টিডের আরও ভাল ইভেন্ট হ্যান্ডলার: $ ('# সংখ্যা_মাত্র') on / জি, '');});
ব্র্যাডএম

3
এফওয়াইআই - প্রশ্নটি এর জন্য জিজ্ঞাসা করেনি, তবে এটি দশমিকের জন্য অনুমতি দেয় না (উদাঃ 12.75)। "কীপ" এর পরিবর্তে "ইনপুট" বাঁধাই তাদের অক্ষরটিকে দ্বিতীয় ভাগে দেখার পরিবর্তে মসৃণ ইউএক্স তৈরি করে, তারপরে এটি সরিয়ে ফেলা হয়।
পল

44

জাভাস্ক্রিপ্ট ফাংশনটি ন্যান ,

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

যদি (isNaN (document.getElementById ('ইনপুট্ড')। ভাল ())

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

আপডেট: এবং এখানে একটি দুর্দান্ত নিবন্ধ এটি সম্পর্কে কথা বলছে তবে jQuery ব্যবহার করে: এইচটিএমএল পাঠ্যবক্সগুলিতে সংখ্যার মানগুলিতে সীমাবদ্ধ করা হচ্ছে


40
ভাল ... আপনার উদাহরণের অংশটি বাদ দিয়ে "জ্যাকুয়ারি ব্যবহার করছেন না" যা জ্যাকুয়ারি ব্যবহার করছে ...
গ্যালাকটিক কাউবয়

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 জিজ্ঞাসা / এর বিরুদ্ধে ইনপুটটি মেলে ফেলতে পারেন তখন এই সমস্ত সমস্যার দিকে যান কেন? এবং '8' কোনটি উপস্থাপন করে?
অ্যালান মুর

@ অ্যালান: হাহাহা, আমার কোনও ধারণা নেই - আমি সরাসরি উত্স থেকে অনুলিপি করেছি। পরিবর্তে আমি "if (ইভেন্ট.keyCode! = 46 && ইভেন্ট.keyCode! = 8)" লিখতাম, বা আপনি যেমন বলেছিলেন তেমন রেজেক্স ব্যবহার করবো। আমি মনে করি 8 টি মুছুন কী উপস্থাপন করে।
আইভর

4
উদাহরণস্বরূপ শিফট +8 টিপতে চেষ্টা করুন - আপনার বৈধতাটি * প্রবেশ করতে দেবে
অ্যান্টন

এটি দুর্দান্ত Wআপনি আরও ভাল হতে পারেন, যদি এটি শিফট কী + নম্বরগুলি পরিচালনা করে (বিশেষ চরিত্রের মতো! @ # $% ^ ..)
শিজু

27

আমি এটি আমাদের অভ্যন্তরীণ সাধারণ জেএস ফাইলগুলিতে ব্যবহার করি। আমি কেবল কোনও ইনপুটে ক্লাস যুক্ত করে যা এই আচরণের প্রয়োজন।

$(".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 প্যাটার্ন বৈশিষ্ট্য রয়েছে:

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

দুর্দান্ত জিনিসটি এটি মোবাইল ডিভাইসে একটি সংখ্যাসূচক কীবোর্ড নিয়ে আসে যা jQuery ব্যবহারের চেয়ে আরও ভাল way


2
এর অনেক বেশি ভোট হওয়া উচিত। যদি কিছু হয় তবে আপনি নন- এইচটিএমএল 5 ব্রাউজারগুলির জন্য একটি ফ্যাল ব্যাক রেজেক্সও যুক্ত করতে পারেন - তবে তথ্যের বৈধতা যেভাবেই হোক সার্ভার-সাইড পরিচালনা করা উচিত।
মারকাস

দেখে মনে হচ্ছে এটি এখনই বেশিরভাগ ব্রাউজার দ্বারা ভাল সমর্থনযোগ্য, তাই আধুনিকীকরণ সমর্থন এত গুরুত্বপূর্ণ নয়: ক্যানিউজ.com / #search= Pattern সাফারিটি এই সাইটে আংশিকভাবে সমর্থিত হিসাবে তালিকাভুক্ত করা সত্ত্বেও খুব ভাল কাজ করে। চেষ্টা করে দেখুন!
অতিথি

@ গুয়েস্ট এর জন্য আপনাকে অনেক ধন্যবাদ। দ্রুত এবং সহজ উত্তর! আমার মতে শীর্ষ উত্তর।
বাইনারিজয় 01 ই

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" />

সমাধানের জন্য আমি এই লিঙ্কটি উল্লেখ করেছি । এটি পুরোপুরি কাজ করে !!!


সম্ভবত এটি অনুমোদিত /\dype\./। দশমিক সংখ্যা
জাঙ্গো

এটি ক্রোমে নিখুঁত কাজ করে। তবে মজিলা ফায়ারফক্সে নয়
কিরাতাকা

হাই, আমি সাংখ্যিক মান একটি সঙ্গে নিশ্চিত করতে পারে decimalমধ্যে 0.0থেকে 24.0আমি এটা ঢুকতে করতে পারছি না.
ট্রান্সফরমার

অনুলিপি পেস্ট
মিড


14

এইচটিএমএল 5 এর প্যাটার্ন বৈশিষ্ট্যটি একটি নিয়মিত অভিব্যক্তি নির্দিষ্ট করে যা উপাদানটির মানটির বিপরীতে পরীক্ষা করা হয়।

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

দ্রষ্টব্য: প্যাটার্ন বৈশিষ্ট্যটি নিম্নলিখিত ইনপুট ধরণের সাথে কাজ করে: পাঠ্য, অনুসন্ধান, url, টেল, ইমেল এবং পাসওয়ার্ড।

  • [0-9] কোনও নিয়মিত প্রকাশের শর্তের সাথে প্রতিস্থাপন করা যেতে পারে।

  • {1,3} এটি সর্বনিম্ন 1 টি উপস্থাপন করে এবং সর্বোচ্চ 3 ডিজিট প্রবেশ করা যায়।


হাই, আমি সাংখ্যিক মান একটি সঙ্গে নিশ্চিত করতে পারে decimalমধ্যে 0.0থেকে 24.0আমি এটা ঢুকতে করতে পারছি না.
ট্রান্সফরমার

1
@ ট্রান্সফর্মার এই <ইনপুট টাইপ = "সংখ্যা" প্যাটার্ন = "[0-9] + ([[\।,] [0-9] +) চেষ্টা করে?" পদক্ষেপ = "0.01">
বিকিসিস

11

JQuery.uthorate ব্যবহার করে মোটামুটি সহজ কিছু

$(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

আরে আমি এটি ব্যবহার করছি তবে আমি যা দেখছি তা হ'ল তার মতো 1.2 বা 3.455 এর মতো বিন্দুটিকে অনুমতি দেওয়া
বিবেক

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;
টমভো

6

আমি উপরের @ ব্যবহারকারী 261922 এর পোস্টের ভিত্তিতে আমার লিখেছি, কিছুটা সংশোধন করা হয়েছে যাতে আপনি সমস্ত, ট্যাব নির্বাচন করতে পারেন এবং একই পৃষ্ঠায় একাধিক "কেবলমাত্র" ক্ষেত্রগুলি পরিচালনা করতে পারেন।

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);
}

কেবল ইনপুট ট্যাগে যুক্ত করুন "... ইনপুট ... আইডি =" দাম "অনকিডাউন =" রিটার্ন নাম্বার (ইভেন্ট) "..." এবং আপনার কাজ শেষ হয়েছে;)


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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.