2016-07-11 2 views
0

Ниже мое текстовое поле:Как запретить пользователю вводить более двух цифр после десятичного числа?

<input type="number" id="payement-textbox'+index+'" name="payment-textbox" min="0" max="100000" step="any" maxlength="9" class="payment" placeholder="--" value=""/>; 

Есть две проверки на моем типа номер текстового поля. Во-первых, пользователь не может ввести значение, превышающее 99999,99, которое я применил успешно. Другим является то, что пользователь не может ввести более двух цифр после десятичной дроби, которая не работает.

Вот мой JQuery код:

$('input.payment').on("change paste keyup", function(event) { 
      var max = parseFloat($(this).attr('max')); 
      var num = parseFloat($(this).val()); 
      if (num >= max) 
      { 
       $(this).val("99999.99"); 
      } 
      if(($(this).val().indexOf('.') != -1) && ($(this).val().substring($(this).val().indexOf('.')).length > 2)) 
      { 
      event.preventDefault(); 
      } 

     }); 

Не могли бы вы сказать мне, где я неправильно?

+0

См эту ссылку, надеюсь, это поможет вам http://stackoverflow.com/questions/21796827/jquery-allow-only-two-numbers-after-decimal- point –

+0

http://jsfiddle.net/S9G8C/203/ –

+0

Поскольку он запускается ** после ** вход уже был введен, вы захотите использовать 'keydown'. Просто отметьте, что вам нужен способ для удаления 2-го десятичного числа (* ex: проверка третьего десятичного знака и удаление последней цифры *). –

ответ

0

Try:

$("#yourinput").keyup(function(){ 
 
    var num = parseFloat($(this).val()); 
 
    if (num >= 99999.99) 
 
    { 
 
    $(this).val("99999.99"); 
 
    } 
 
    
 
    var number = ($(this).val().split('.')); 
 
    if (number[1] && number[1].length > 2) 
 
    { 
 
    var salary = parseFloat($("#yourinput").val()); 
 
    $("#yourinput").val(salary.toFixed(2)); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
 
<input id="yourinput" pattern="\d+"> 
 
<span id=bad style="display:none;color:red">BAD</span>

+0

Это сработало. Большое спасибо :) –

0

Вы должны использовать это событие нажатие, так она будет срабатывать до ввода вводится.

Это будет работать:

$('input.payment').on("keypress paste keyup", function(event){ 
    //Your code 
}) 
Смежные вопросы