JQuery භාවිතා කරමින් HTML ආදාන කොටුවේ සංඛ්‍යාත්මක (0-9) පමණක් ඉඩ දෙන්නේ කෙසේද?


916

(0,1,2,3,4,5 ... 9) 0-9 වැනි සංඛ්‍යාත්මක අක්ෂර වලට පමණක් ඉඩ දීමට අවශ්‍ය ආදාන පෙළ ක්ෂේත්‍රයක් ඇති වෙබ් පිටුවක් මම නිර්මාණය කරමි.

JQuery භාවිතා කර මා මෙය කරන්නේ කෙසේද?


73
ඔබට ග්‍රාහක පාර්ශවීය වලංගුකරණය මත විශ්වාසය තැබිය නොහැකි බව මතක තබා ගන්න - පරිශීලකයා ජාවාස්ක්‍රිප්ට් අක්‍රිය කර ඇති විට හෝ ජාවාස්ක්‍රිප්ට් අනුකූල බ්‍රව්සරයක් භාවිතා නොකරන්නේ නම් ඔබ සේවාදායකය මත වලංගු කළ යුතුය.
cjk

45
ඔබ html5 ගැන සලකා බැලුවද? <ආදාන වර්ගය = "අංකය" />. මිනි සහ උපරිම ගුණාංග සමඟ ඔබට ආදානය සීමා කළ හැකිය
ZX12R

5
යතුරුපුවරුවේ ආදාන අගයන් පරික්ෂා කර යතුරු කේත සඳහා පරික්ෂා නොකළ යුතු යැයි මම සිතමි, මන්ද එය යතුරුපුවරුවල වෙනස්කම් හා වඩා විශ්වාසදායක ය.
රිචඩ්

13
මම සම්පූර්ණයෙන්ම රිචඩ් සමග එකඟ: නෑ නෑ keycodes භාවිතා කරන්න. පිළිගත් පිළිතුර ප්‍රංශ යතුරුපුවරුවල ක්‍රියා නොකරයි, උදාහරණයක් ලෙස, එම යතුරුපුවරුවල අංක ටයිප් කිරීම සඳහා ඔබට "Shift" එබිය යුතුය. යතුරු කේත ඉතා අවදානම්, IMHO.
මිනි ක්වාර්ක්

3
X ZX12R IE හි වර්තමාන අනුවාද වල ක්‍රියා නොකරයි. නැවුම්ව තබා ගැනීම සඳහා ඔබේම දෑ මත නවතම කේතය භාවිතා කිරීම හොඳ සහ හොඳයි, නමුත් මෙය ඇත්ත වශයෙන්ම ඕනෑම වෘත්තීය ව්‍යාපෘතියකට විකල්පයක් නොවේ. caniuse.com/#feat=input-number
එරික්

Answers:


1277

සටහන: මෙය යාවත්කාලීන කළ පිළිතුරකි. පහත දැක්වෙන අදහස් යතුරු කේත සමඟ අවුල් වූ පැරණි අනුවාදයක් වෙත යොමු වේ.

jQuery

JSFiddle හි එය ඔබම උත්සාහ කරන්න .

මේ සඳහා ස්වදේශීය jQuery ක්‍රියාත්මක කිරීමක් නොමැත, නමුත් ඔබට <input>පහත දැක්වෙන inputFilterප්ලගිනය සමඟ පෙළක ආදාන අගයන් පෙරහන් කළ හැකිය (පිටපත් + පේස්ට්, ඩ්‍රැග් + ඩ්‍රොප්, යතුරුපුවරු කෙටිමං, සන්දර්භය මෙනු මෙහෙයුම්, ටයිප් කළ නොහැකි යතුරු, භාරකාර ස්ථානය, වෙනස් යතුරුපුවරු පිරිසැලසුම් සහ IE 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
  });
});

වැඩි ආදාන පෙරහන් උදාහරණ සඳහා JSFiddle නිරූපණය බලන්න . ඔබ තවමත් සේවාදායක පාර්ශව වලංගු කිරීම කළ යුතු බව සලකන්න !

පිරිසිදු ජාවාස්ක්‍රිප්ට් (jQuery නොමැතිව)

jQuery ඇත්ත වශයෙන්ම මේ සඳහා අවශ්‍ය නොවේ, ඔබට පිරිසිදු ජාවාස්ක්‍රිප්ට් සමඟද එය කළ හැකිය. මෙම පිළිතුර බලන්න .

HTML 5

HTML 5 සමඟ ස්වදේශීය විසඳුමක් ඇත <input type="number">( පිරිවිතර බලන්න ), නමුත් බ්‍රව්සර් සහාය වෙනස් වන බව සලකන්න:

  • බොහෝ බ්‍රව්සර් වලංගු වන්නේ ආකෘති පත්‍රය ඉදිරිපත් කිරීමේදී මිස ටයිප් කිරීමේදී නොවේ.
  • බොහෝ ජංගම බ්‍රව්සර්step , minසහ maxගුණාංග සඳහා සහය නොදක්වයි .
  • ක්‍රෝම් (අනුවාදය 71.0.3578.98) තවමත් පරිශීලකයාට අක්ෂර ඇතුළු කිරීමට eසහ Eක්ෂේත්‍රයට ඇතුළු වීමට ඉඩ දෙයි . මෙම ප්‍රශ්නය ද බලන්න .
  • ෆයර්ෆොක්ස් (අනුවාදය 64.0) සහ එජ් (එඩ්ජ්එච්ටීඑම්එල් 17.17134) තවමත් පරිශීලකයාට ඕනෑම පෙළක් ක්ෂේත්‍රයට ඇතුළු කිරීමට ඉඩ දෙයි .

එය ඔබම උත්සාහ w3schools.com මත .


45
ස්තූතියි! event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 190 ඔබට දශම අවශ්‍ය නම්
මයිකල් එල් වොට්සන්

9
Txt කොටුව තුළ වම් සහ දකුණු ඊතල සංචාලනයට ඉඩ දීම සඳහා යතුරු කේත 37 සහ 39 එකතු කරන්න: if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39)
ඇන්තනි රැජින

22
අපොයි, මේ සඳහා අපගේ පරීක්ෂකයින්ගෙන් ප්‍රශ්නයක් තෝරා ගත්තා. පරිශීලකයා මාරුව රඳවා තබා සංඛ්‍යාත්මක යතුරු එබීමෙන් වලක්වා ගත යුතුය, එසේ නොමැතිනම් ආදානය ඉඩ දෙනු ඇත! @ # $% ^ & * ()
ඇලන් රයිස්

6
මාරුව + දෝෂය තහවුරු කළේය. එසේම, ALT + අංක පෑඩ් මඟින් ඕනෑම දෙයකට ඉඩ දෙයි (එනම් Alt + 321 = A, Alt + 322 = B, ආදිය ...). සේවාදායක පාර්ශව වලංගු කිරීම සඳහා තවත් අවස්ථාවක්.
ඇන්තනි රැජින

141
මෙම පිළිතුරට මම සැබවින්ම එකඟ නොවෙමි: යතුරුපුවරු සමඟ සෙල්ලම් කිරීම ඇත්තෙන්ම අවදානම් සහගත ය, යතුරුපුවරු පිරිසැලසුම යනු කුමක්දැයි ඔබට විශ්වාස කළ නොහැකි බැවිනි. උදාහරණයක් ලෙස, ප්‍රංශ යතුරුපුවරුවල, අංක ටයිප් කිරීම සඳහා පරිශීලකයන්ට මාරුව එබිය යුතුය. එබැවින් මෙම කේතය කිසිසේත් ක්‍රියා නොකරනු ඇත. එබැවින් කරුණාකර මෙම යතුරු කේත හැක් වෙනුවට වලංගු කිරීම සඳහා යන්න.
මිනි ක්වාර්ක්

186

මෙන්න මම භාවිතා කරන ශ්‍රිතය:

// 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
මට මෙය ප්‍රයෝජනවත් බව පෙනී ගිය නමුත් මට කරදරකාරී "දෝෂයක්" හමු විය. මම මෙය මගේ iMac හි භාවිතා කරන විට, එය a සහ e වැනි අකුරු වලට ඉඩ දෙයි. pc හි යතුරු පෑඩ් අංක iMac හි අකුරු හා මැක් යතුරුපුවරුව සාමාන්‍ය අංකවලට සමාන බව පෙනේ. මැක් සහ පීසී යන දෙකින්ම එය ක්‍රියාත්මක කරන්නේ කෙසේදැයි යමෙක් දන්නවාද?
වොල්මාර්

3
යතුරු "මුල් පිටුව", "අවසානය" ද වැඩ නොකරයි. මෙය පීටර් යෝජනා කළ වඩා හොඳ විසඳුමකි: west-wind.com/weblog/posts/2011/Apr/22/…
bman

ඒ ඇයි return this.each(function() ?
powtac

2
owpowtac - එබැවින් ඔබට ඇමතිය හැකිය .ForceNumericOnly () බහු වස්තු මත. උදාහරණයක් ලෙස ... $ ("ආදානය [type = 'text']"). ForceNumericOnly ()
ඔලිවර් පියර්මේන්

1
මෙම @powtac eachසිට return this.each(function()HaggleLad කී පරිදි බහු වස්තු ඉඩ වන අතර, returnකොටසක් වැනි chaining ඉඩ, අමතන්නා කිරීමට jQuery වස්තුව නැවත නැවත පැමිණීමට නියමිත ය$("input[type='text'").ForceNumericOnly().show()
ජෝස් Rui Santos

155

පෙළට:

<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
rophrogz, මෙය උත්සාහ කරන්න : onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')".
පැට්‍රික් ෆිෂර්

මෙය මනාව ක්‍රියාත්මක වන අතර ඉහත අංක මෙන් නොව Shift + අංකය වළක්වයි.
නික් හාර්ට්ලි

5
hen 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

89

ඔබට මේ වගේ ආදාන සිදුවීම් භාවිතා කළ හැකිය:

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

නමුත්, මෙම කේත වරප්‍රසාදය කුමක්ද?

  • එය ජංගම බ්‍රව්සර් මත ක්‍රියා කරයි (යතුරුපුවරුව සහ යතුරු කේතය ගැටළුවක් ඇත).
  • එය AJAX ජනනය කළ අන්තර්ගතය මත ද ක්‍රියා කරයි, මන්ද අප "on" භාවිතා කරන බැවිනි.
  • යතුරුපුවරුවට වඩා හොඳ ක්‍රියාකාරිත්වය, උදාහරණයක් ලෙස පේස්ට් සිද්ධිය.

6
මෙය පිළිගත් පිළිතුරට වඩා ශක්තිමත් (හා සරල) විසඳුමක් ලෙස මට හැඟේ.
ජෙරමි හැරිස්

ප්‍රතිස්ථාපනය (/ \ D / g, '') භාවිතා කරන්නේ නම් ඊටත් වඩා සරලයි
ඇල්ෆර්ගන්

හායි, කොහොමද මම සංඛ්යාත්මක අගය සමඟ සහතික කළ හැකි decimalඅතර 0.0කිරීමට 24.0මම එය ඇතුලත් කරමු නොහැකි වෙමි.
ට්රාන්ස්ෆෝමර්

මම භාවිතා කිරීමට යෝජනා කරමිthis.value = Number(this.value.replace(/\D/g, ''));
හසන් ජී

හොඳ පිළිතුරක්, පන්තිය ටොගල් කිරීමෙන් ආදානයක් සංඛ්‍යාත්මකද නැද්ද යන්න පහසුවෙන් ටොගල් කිරීමට ඉඩ දෙයි
raklos

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] / g, '');});
බ්‍රැඩ්එම්

3
FYI - ප්‍රශ්නය එය ඉල්ලා සිටියේ නැත, නමුත් මෙය දශම සඳහා ඉඩ නොදේ (උදා: 12.75). “යතුර” වෙනුවට “ආදානය” බන්ධනය කිරීමෙන් තත්පරයට බෙදීම තත්පරයට ඔවුන්ගේ චරිතය දැකීම වෙනුවට සුමට යූඑක්ස් එකක් සෑදී ඇත.
පෝල්

44

JavaScript ශ්‍රිතය භාවිතා කරන්න isNaN ,

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()මචන් .. ඒක තාමත් විහිළුවක්. .val()විහිළුවක්. use.value
mpen


හායි, කොහොමද මම සංඛ්යාත්මක අගය සමඟ සහතික කළ හැකි decimalඅතර 0.0කිරීමට 24.0මම එය ඇතුලත් කරමු නොහැකි වෙමි.
ට්රාන්ස්ෆෝමර්

30
$(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 නමුත් බැරෑරුම් ලෙස, ඔබට රීජෙක්ස් / ^ Leisure.\d ]+$/ ට එරෙහිව ආදානය ගැලපෙන විට මේ සියලු කරදර වලට යන්නේ ඇයි? '8' නියෝජනය කරන්නේ කුමක්ද?
ඇලන් මුවර්

@ ඇලන්: හාහා, මට කිසිම අදහසක් නැහැ - මම කෙලින්ම මූලාශ්‍රයෙන් පිටපත් කළා. මම ඒ වෙනුවට "if (event.keyCode! = 46 && event.keyCode! = 8)" ලියන්නෙමි, නැතහොත් ඔබ කී පරිදි රීජෙක්ස් භාවිතා කරන්න. මම හිතන්නේ 8 මකාදැමීමේ යතුර නියෝජනය කරයි.
අයිවර්

4
උදාහරණයක් ලෙස Shift + 8 එබීමට උත්සාහ කරන්න - ඔබේ වලංගුකරණයට * ඇතුල් වීමට ඉඩ දෙනු ඇත
ඇන්ටන්

මෙය හොඳයි. වඩා හොඳ වනු ඇත, එය Shift යතුර + අංක හසුරුවන්නේ නම් (විශේෂ අක්ෂර! @ # $% ^ ..)
ෂයිජු

28

මම මෙය අපගේ අභ්‍යන්තර පොදු js ගොනුවේ භාවිතා කරමි. මෙම හැසිරීම අවශ්‍ය ඕනෑම ආදානයකට මම පන්තිය එක් කරමි.

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

2
ලස්සන, අලංකාර සහ ප්‍රයෝජනවත් කේතයක්! ස්තූතියි. නමුත් ඔබ යතුරු සහ යතුරු සිදුවීම් එකතු කළ යුතුය.
සිල්වියෝ ඩෙල්ගාඩෝ

25

මට වඩා සරල එකක්

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

7
this.value.replace(/[^0-9\.]/g,'');OP හි අවශ්‍යතා 0-9 ඇතුළත් කිරීමට ඔබ භාවිතා කරන බවට සහතික විය යුතුය
Chalise

24

ඇයි මෙතරම් සංකීර්ණ? HTML5 රටා ලක්ෂණයක් ඇති බැවින් ඔබට jQuery පවා අවශ්‍ය නොවේ:

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

සිසිල්ම දෙය නම් එය ජංගම උපාංගවල සංඛ්‍යාත්මක යතුරු පුවරුවක් ගෙන ඒමයි, එය jQuery භාවිතා කිරීමට වඩා හොඳය.


2
මේ සඳහා වැඩි ඡන්ද ප්‍රමාණයක් තිබිය යුතුය. ඕනෑම දෙයක් නම්, ඔබට html5 නොවන බ්‍රව්සර් සඳහා නැවත වැටීමක් එකතු කළ හැකිය - නමුත් දත්ත වලංගු කිරීම කෙසේ හෝ සේවාදායක පාර්ශවයෙන් හැසිරවිය යුතුය.
මාකස්

මේ වන විට එය බොහෝ බ්‍රව්සර්වල හොඳින් සහාය දක්වන බවක් පෙනේ, එබැවින් නූතනකරණය සහාය එතරම් වැදගත් නොවේ: caniuse.com/#search=pattern සෆාරි මෙම වෙබ් අඩවියේ අර්ධ වශයෙන් සහය දක්වන බව ලැයිස්තුගත කර තිබුණද එය ඉතා හොඳින් ක්‍රියාත්මක වේ. උත්සහ කරන්න!
ආගන්තුක

@guest මේ සඳහා ඔබට බොහෝම ස්තූතියි. ඉක්මන් හා පහසුම පිළිතුර! මගේ මතය අනුව ඉහළම පිළිතුර.
BinaryJoe01

19

මෙම ඉතා සරල විසඳුම භාවිතා කිරීමෙන් ඔබට එය කළ හැකිය

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

විසඳුම සඳහා මම මෙම සබැඳිය වෙත යොමු කළෙමි . එය පරිපූර්ණව ක්රියා කරයි !!!


සමහර විට මෙය ඉඩ දීම වඩා හොඳය. දශම සංඛ්‍යා
සැන්ගෝ

මෙය ක්‍රෝම් වලින් පරිපූර්ණව ක්‍රියා කරයි. නමුත් මොසිල්ලා ෆයර්ෆොක්ස් හි නොවේ
කිරටක

හායි, කොහොමද මම සංඛ්යාත්මක අගය සමඟ සහතික කළ හැකි decimalඅතර 0.0කිරීමට 24.0මම එය ඇතුලත් කරමු නොහැකි වෙමි.
ට්රාන්ස්ෆෝමර්


14

HTML5 හි රටා ගුණාංගය මඟින් මූලද්‍රව්‍යයේ අගය පරීක්ෂා කරන නිත්‍ය ප්‍රකාශනයක් නියම කරයි.

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

සටහන: රටා ගුණාංගය පහත දැක්වෙන ආදාන වර්ග සමඟ ක්‍රියා කරයි: පෙළ, සෙවීම, url, දුරකථන, විද්‍යුත් තැපෑල සහ මුරපදය.

  • [0-9] ඕනෑම නිත්‍ය ප්‍රකාශන තත්වයකින් ප්‍රතිස්ථාපනය කළ හැකිය.

  • {1,3} එය අවම වශයෙන් 1 නියෝජනය කරන අතර උපරිම ඉලක්කම් 3 ක් ඇතුළත් කළ හැකිය.


හායි, කොහොමද මම සංඛ්යාත්මක අගය සමඟ සහතික කළ හැකි decimalඅතර 0.0කිරීමට 24.0මම එය ඇතුලත් කරමු නොහැකි වෙමි.
ට්රාන්ස්ෆෝමර්

1
trans ට්‍රාන්ස්ෆෝමර් මෙම <ආදාන වර්ගය = "අංකය" රටාව = "[0-9] + ([\.,] [0-9] +) උත්සාහ කරන්න?" step = "0.01">
විකීසිස්

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

ශ්‍රිතය suppressNonNumericInput (සිද්ධිය) {

    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;
tomvo

7

මෙන්න මම කලකට පෙර නිර්මාණය කළ ඉක්මන් විසඳුමක්. ඔබට මගේ ලිපියෙන් ඒ ගැන වැඩිදුර කියවිය හැකිය:

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

මම ඉහත @ 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

ටැබයට ඉඩ දීමට ඔබට අවශ්‍යය:

$("#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 Widget කර්මාන්ත ශාලාව භාවිතා කරන පිළිතුරකි. ඔබට පහසුවෙන් අවසර දී ඇති අක්ෂර අභිරුචිකරණය කළ හැකිය.

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

එමඟින් අංක, සංඛ්‍යා සං signs ා සහ ඩොලර් ප්‍රමාණයන් සඳහා ඉඩ ලබා දේ.

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

මෙය සහතික කරන්නේ $ සහ පසුව + - පළමු හෝ පළමු / දෙවන අක්ෂර ලෙස වන අතර පසුව දශම ලක්ෂයක් පමණක්ද?
ගෝර්ඩන්

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

ආදාන ටැගයට එක් කරන්න "... ආදානය ... id =" මිල "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 වෙත පිවිසෙන්න

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.