Як дозволити лише числовий (0-9) у вхідному коді HTML за допомогою jQuery?


901

Я створюю веб-сторінку, де є текстове поле для введення, в якому я хочу дозволити лише числові символи, такі як (0,1,2,3,4,5 ... 9) 0-9.

Як це зробити за допомогою jQuery?


73
Майте на увазі, що ви не можете розраховувати на перевірку на стороні клієнта - вам також потрібно перевірити на сервері, якщо у користувача вимкнено JavaScript або не використовується браузер, сумісний з JavaScript.
cjk

45
Ви розглядали html5? <type type = "число" />. з атрибутами min та max ви також можете обмежити введення
ZX12R

5
Я думаю, ви повинні перевірити значення введення для події клавіатури, а не перевіряти наявність клавішних кодів, тому що це набагато надійніше в різних відмінностях клавіатур, а що ні.
Річард

13
Я повністю погоджуюся з Річардом: не використовуйте клавіші. Наприклад, прийнята відповідь не працює на французьких клавіатурах, оскільки вам потрібно натиснути "Shift", щоб набрати цифри на цих клавіатурах. Кейкоди просто надто ризиковані, ІМХО.
MiniQuark

3
@ ZX12R Не працює в жодних поточних версіях IE. Все добре і добре використовувати найновіший код у власних речах, щоб зберегти свіжість, але це насправді не варіант для майже будь-якого професійного проекту. caniuse.com/#feat=input-number
Ерік

Відповіді:


1260

Примітка. Це оновлена ​​відповідь. У коментарях нижче йдеться про стару версію, яка переплуталася з клавішними кодами.

jQuery

Спробуйте самі на JSFiddle .

Для цього немає вбудованої реалізації jQuery, але ви можете відфільтрувати вхідні значення тексту <input>за допомогою наступного inputFilterплагіна (підтримує Copy + Paste, Drag + Drop, комбінації клавіш, операції з контекстним меню, нестандартні клавіші, положення каретки, інше розкладки клавіатури та всі браузери з 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 для отримання додаткових прикладів фільтрів. Також зверніть увагу, що ви все ще повинні зробити перевірку на стороні сервера!

Чистий JavaScript (без jQuery)

jQuery насправді для цього не потрібен, ви можете робити те ж саме і з чистим JavaScript. Дивіться цю відповідь .

HTML 5

HTML 5 має власне рішення з <input type="number">(див. Специфікацію ), але зауважте, що підтримка браузера варіюється:

  • Більшість веб-переглядачів підтверджують введення лише під час подання форми, а не під час введення.
  • Більшість мобільних браузерів не підтримують step, minі maxатрибути.
  • Chrome (версія 71.0.3578.98) все ще дозволяє користувачеві вводити символи eта Eв поле. Дивіться також це питання .
  • Firefox (версія 64.0) та Edge (EdgeHTML версія 17.17134) все ще дозволяють користувачеві вводити будь-який текст у поле.

Спробуйте самі на w3schools.com .


45
Дякую! event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 190, якщо ви бажаєте десяткових знаків
Майкл Л Уотсон

9
Додайте keyCodes 37 і 39, щоб дозволити навігацію зі стрілкою ліворуч і праворуч у полі txt, наприклад: if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39)
Ентоні Королева

22
ooo, щойно ми взяли проблему для цього у наших тестерів. Ви повинні завадити користувачеві утримувати зсув та натискати цифрові клавіші, інакше введення дозволить! @ # $% ^ & * ()
Аллен Райс

6
Підтверджено зрушення + помилка. Крім того, цифровий пробіл ALT + дозволяє майже все (наприклад, Alt + 321 = A, Alt + 322 = B тощо). Ще один випадок перевірки на стороні сервера.
Ентоні Королева

140
Я дуже не погоджуюся з цією відповіддю: це дійсно занадто ризиковано, граючи з клавішами, тому що ви не можете бути впевнені, що таке розкладка клавіатури. Наприклад, на французьких клавіатурах користувачі повинні натискати shift, щоб набрати цифри. Тож цей код взагалі не буде працювати. Тому, будь ласка, перейдіть на перевірку замість цього злому коду.
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
я вважав це корисним, але я знайшов неприємну "помилку". коли я використовую це на моєму iMac, це дозволяє деякі букви, як-от і e. здається, що цифри клавіатури на ПК - це букви на iMac, а клавіатура Mac - те саме, що і звичайні номери. Хтось знає, як змусити його працювати як на Mac, так і на ПК?
Вольмар

3
Клавіші "Головна", "Кінець" теж не працюють. Це краще рішення, яке запропонував Петро: west-wind.com/weblog/posts/2011/Apr/22/…
bman

Чому існує return this.each(function() ?
powtac

2
@powtac - так ви можете зателефонувати .ForceNumericOnly () на декілька об'єктів. Наприклад ... $ ("input [type = 'text']"). ForceNumericOnly ()
Олівер Пірмен

1
@powtac eachз return this.each(function()- це дозволити декілька об'єктів, як сказав HaggleLad, а returnчастина - повернути об'єкт jQuery назад абоненту, щоб дозволити ланцюжок, наприклад$("input[type='text'").ForceNumericOnly().show()
Jose Rui Santos

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,'')".
Патрік Фішер

Це прекрасно працює і запобігає номеру Shift + на відміну від наведених вище.
Нік Хартлі

5
@ mhenry1384 Така очікувана поведінка. Я вважаю, що це хороший відгук, але якщо вам це не подобається, то те, що ви шукаєте, буде ключовим підходом до коду.
Патрік Фішер

2
Ви можете змінити, щоб /[^0-9]|^0+(?!$)/gзапобігти нульовій серії нуля.
Джонні Сковдал

105

Ви можете просто використовувати звичайний регулярний вираз JavaScript для тестування чисто числових символів:

/^[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,'');
});

Але, що це за привілей коду?

  • Він працює на мобільних браузерах (проблеми з клавіатурою та keyCode).
  • Він працює і на вмісті, створеному AJAX, тому що ми використовуємо "увімкнено".
  • Краща продуктивність, ніж натискання клавіш, наприклад, на пасті.

6
Я відчуваю, що це набагато більш надійне (і простіше) рішення, ніж прийнята відповідь.
Джеремі Гарріс

Ще простіше, якщо використовується заміна (/ \ D / g, '')
Альфергон

привіт, як я можу забезпечити числове значення з decimalвідміною 0.0до 24.0я не можу дозволити йому ввести.
трансформатор

Я б запропонував використовуватиthis.value = Number(this.value.replace(/\D/g, ''));
HasanG

Хороша відповідь, дозволяє легко перемикати, чи є вхід числовим чи ні, перемикаючи клас
raklos

55

Короткий і солодкий - навіть якщо це не знайде багато уваги після 30+ відповідей;)

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

5
Я б замінив клавіатуру на введення, інакше ви можете зберегти літеру, натиснутою, а потім натиснути, щоб вийняти фокус із текстового поля, і він залишить текст таким, яким він є. ввід запевняють, що цього не може статися
WizLiz

Дякую за регулярний вираз - але це кращий обробник подій: $ ('# number_only'). On ('введення властивості зміни', функція () {this.value = this.value.replace (/ [^ 0-9] / г, '');});
BradM

3
FYI - питання не задавав його, але це не дозволяє децималі (наприклад, 12.75). Прив'язка "введення", а не "клавіш", робить більш плавним UX, а не бачити їх характер на частку секунди, а потім видаляти його.
Павло

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()чувак .. це все-таки jquery. .val()- річ із джекер. використання.value
mpen


привіт, як я можу забезпечити числове значення з 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 Але серйозно, навіщо йти на всю цю проблему, коли ти можеш просто співставити вклад із регексом /^ evidence.\dSense+$/? А що являє собою "8"?
Алан Мур

@Alan: Ха-ха, поняття не маю - я скопіював безпосередньо з джерела. Я б написав "if (event.keyCode! = 46 && event.keyCode! = 8)", або застосував би регулярний вираз, як ви сказали. Я думаю, що 8 являє собою ключ видалення.
Івар

4
Спробуйте натиснути Shift + 8, наприклад - ваша перевірка дозволить отримати * в
Anton

Це добре. Було б набагато краще, якби він обробляв клавішу 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
Chalise

24

Чому так складно? Вам навіть не потрібен jQuery, оскільки є атрибут HTML5 шаблону:

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

Прикольна річ у тому, що вона відображає цифрову клавіатуру на мобільних пристроях, що набагато краще, ніж використання jQuery.


2
Це повинно мати набагато більше голосів. Якщо що-небудь, ви також можете додати зворотній регекс для браузерів, які не є html5 - але перевірку даних слід будь-коли обробляти на сервері.
Маркус

Схоже, вона на сьогодні підтримується більшістю браузерів, тому підтримка модернізації не так важлива: caniuse.com/#search=pattern Safari працює дуже добре, навіть незважаючи на те, що вона частково підтримується на цьому сайті. Спробуй це!
гість

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

Я посилався на це посилання для рішення. Це прекрасно працює !!!


Можливо, це краще /\d|\./ дозволити. десяткові числа
Занго

Це прекрасно працює в кром. Але не в Mozilla FireFox
Кіратака

привіт, як я можу забезпечити числове значення з decimalпроміжком 0.0до 24.0Я не можу дозволити йому ввести.
трансформатор

не працює з копією пасти
mrid


14

Атрибут шаблону в HTML5 визначає регулярне вираження, на яке перевіряється значення елемента.

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

Примітка: Атрибут шаблону працює з такими типами введення: текст, пошук, URL, тел, електронна пошта та пароль.

  • [0-9] можна замінити будь-якою умовою регулярного вираження.

  • {1,3} це мінімум 1, а максимум 3 цифри можна ввести.


привіт, як я можу забезпечити числове значення з decimalпроміжком 0.0до 24.0Я не можу дозволити йому ввести.
трансформатор

1
@transformer спробуйте це <input type = "number" pattern = "[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

функція 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,45 так
Vivekh

8

Ви можете використовувати цю функцію JavaScript:

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, тому ви можете прив'язати його до свого текстового поля за допомогою вбудованого JavaScript:

<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 Widget factory. Ви можете легко налаштувати, які символи дозволено легко.

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

Просто додайте в тег введення "... input ... id =" price "onkeydown =" return onlyNumbers (event) "...", і ви закінчите;)


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, оскільки атрибут min встановлений у 0, а атрибут max - 9.

для отримання додаткової інформації про відвідування http://www.w3schools.com/html/html_form_input_types.asp

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.