Вопрос по jquery, javascript – Ограничьте поле ввода двумя десятичными знаками с помощью jQuery

6

У меня есть поле ввода, которое я хочу ограничить, чтобы пользователь мог ввести только число с максимум двумя десятичными знаками. Хотите сделать это с помощью jQuery.

Могу ли я использовать JQuerytoFixed() функционировать как-то?

Thanx!

Почему вы хотите использовать jQuery? Вы можете сделать то же самое, используя & quot; maxlenght = 2 & quot; в html ... Далее, если вы хотите быть уверены, что пользователь может вставлять только десятичные дроби, вы можете создать функцию, вызываемую для события & quot; onkeypress & quot; AleVale94
Похоже, вы хотите проверить денежное поле. Может быть, это поможет:javascriptbymallik.blogspot.com/2009/08/… Tim

Ваш Ответ

8   ответов
0

2 десятичных знаков.

function limitDec(id) {
  // find elements
  var amt = $("#testdec")

  // handle keyup
  amt.on("keyup", function() {
    if (isNaN(amt.val())) {
      amt.val(0);
    }
    if (amt.val().indexOf(".") > -1 && (amt.val().split('.')[1].length > 2)) {
      amt.val(amt.val().substring(0, amt.val().length - 1));
    }
  })
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<input type="text" id="testdec" onkeyup="limitDec(this.id)" />

9
$('input#decimal').blur(function(){
    var num = parseFloat($(this).val());
    var cleanNum = num.toFixed(2);
    $(this).val(cleanNum);
    if(num/cleanNum < 1){
        $('#error').text('Please enter only 2 decimal places, we have truncated extra points');
        }
    });

http://jsfiddle.net/sabithpocker/PD2nV/

С помощьюtoFixed так или иначе вызовет приближение123.6666 -> 123.67 Если вы хотите избежать приближения, проверьте этот ответОтображение двух десятичных знаков без округления

0
<input type="text" id="decCheck" onkeyup="decimalCheck();"/>

<script>
function decimalCheck(){
var dec = document.getElementById('decCheck').value;
if(dec.includes(".")){
    var res = dec.substring(dec.indexOf(".")+1);
    var kl = res.split("");
    if(kl.length > 1){
     document.getElementById('decCheck').value=(parseInt(dec * 100) / 
      100).toFixed(2);
    }
  }
}
</script>
0

inputField.value.replace(/(\...)(.)/, "$1");

или это для чисел:

inputField.value.replace(/(\.[0-9][0-9])([0-9])/, "$1");

Я нашел этот метод здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Example:_Switching_words_in_a_string

5

    $('#id').on('input', function () {
        this.value = this.value.match(/^\d+\.?\d{0,2}/);
    });

Селектор идентификатора может быть заменен селектором CSS.

Это самое лучшее!
3
<input type="text" name="amount1" id="amount1" class="num_fld Amt" onkeypress="return check_digit(event,this,8,2);" size="9" value="" maxlength="8" style="text-align:right;" />

вашими потребностями десятичных знаков, а также ограничивать более одной точки

function check_digit(e,obj,intsize,deczize) {
    var keycode;

    if (window.event) keycode = window.event.keyCode;
    else if (e) { keycode = e.which; }
    else { return true; }

    var fieldval= (obj.value),
        dots = fieldval.split(".").length;

    if(keycode == 46) {
        return dots <= 1;
    }
    if(keycode == 8 || keycode == 9 || keycode == 46 || keycode == 13 ) {
        // back space, tab, delete, enter 
        return true;
    }          
    if((keycode>=32 && keycode <=45) || keycode==47 || (keycode>=58 && keycode<=127)) {
         return false;
    }
    if(fieldval == "0" && keycode == 48 ) {
        return false;
    }
    if(fieldval.indexOf(".") != -1) { 
        if(keycode == 46) {
            return false;
        }
        var splitfield = fieldval.split(".");
        if(splitfield[1].length >= deczize && keycode != 8 && keycode != 0 )
            return false;
        }else if(fieldval.length >= intsize && keycode != 46) {
            return false;
        }else {
            return true;
        }
    }
}
2
$("#myInput").focusout(function() {
    if ($(this).val().length > 2 || isNaN(Number($(this).val())) {
        alert("Wrong number format");
    }
});
так же, как @PhilDD, и он был пропущен один ")"
Похоже, это проверяет только длину значения, а не количество десятичных знаков в значении.
3

<input type="number" step="0.01" />

Demo

Если вы хотите стилизовать некорректные вводы (некоторые браузеры делают это по умолчанию), вы можете использовать:invalid селектор:

input:invalid {   box-shadow: 0 0 1.5px 1px red;   }

Обратите внимание, что этот подход не будет пытаться автоматически обрезать число, но если пользователь введет более двух десятичных цифр, ввод станет недействительным, и, таким образом, форма не будет отправлена:

Screenshot on Firefox

Похожие вопросы