Как я могу определить маску ввода для цены с маской ввода jquery

Я хочу разрешить пользователю вводить сумму от 0 до 1000. При желании он может ввести сумму в центах. Примеры сумм, которые я хочу разрешить: 199,99, 29,90, 999,99, 0,01, 10, 999.

Я пробовал это, но это действительно не работает:

$('.input-price').mask('000.00', {reverse: true});

Есть ли другой рабочий способ, который вы можете мне предложить?


person jugadore    schedule 12.06.2019    source источник
comment
по умолчанию HTML5 поддерживает атрибуты step, min и max в теге html. Но я бы попытался выяснить, что не так с вашим .mask() звонком. Вы пытались использовать , вместо . в качестве разделителя с плавающей запятой? Вы пытались предоставить собственный объект перевода, как описано в документации? Вот почему я выбросил jquery после того, как HTML5 по умолчанию получил достаточную поддержку браузеров.   -  person Shilly    schedule 12.06.2019


Ответы (2)


Вы можете использовать заполнитель 9, который делает цифру необязательной:

$('.input-price').mask('099.99');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.15/jquery.mask.js"></script>

<input type="text" class="input-price" placeholder="Enter price..." />

person corschdi    schedule 12.06.2019

Попробуйте это (JS)

    function isNumberDot(evt) {
        evt = (evt) ? evt : window.event;
        var charCode = (evt.which) ? evt.which : evt.keyCode;
        if (charCode > 31 && (charCode < 48 || charCode > 57)&& charCode != 46 && charCode != 127) {
            return false;
        }
        return true;
    }
<input type="text" value="0.00"
    onKeyPress="return isNumberDot(event);"
    autocomplete="off"  onFocus="this.select();" onChange="if(this.value=='NaN' || this.value==''){this.value='0.00'};this.value=parseFloat(this.value).toFixed(2);"
    >

person Waruna Manjula    schedule 12.06.2019
comment
Это намного лучше, но по-прежнему позволяет пользователю вводить такие числа, как 99,99999. - person jugadore; 12.06.2019