2015-02-06 3 views
0

У меня есть текстовое поле в столбце «сумма». Здесь я хочу ввести только 5 чисел перед десятичным и 2 числа после десятичного числа, как это «99999.99». Я хочу сделать это в jquery. Я использую следующий код,Подтверждение ввода суммы в текстовое поле

editor: { type:"textbox",style:'z-index:10000;position:relative;',init:filterhandler,cls:'com1',}, 
 
    
 
    
 
    var filterhandler = function (ui) { \t \t \t 
 
    $('.com1').keyup(function(){ 
 
    var value = $(".com1").val(); 
 
    if(value.indexOf('.') === -1){ 
 
    \t var max=99999; 
 
    \t if(value > max){ 
 
    \t \t $('div.jGrowl').find('div.jGrowl-notification').parent().remove(); 
 
      $.jGrowl("You can't enter more than 99999.99", { sticky: false });     
 
      value = value.substring(0,5);     
 
       $(".com1").val(value);      
 
       value = value.substring(0,3);    
 
    \t } 
 
     }else{ 
 
      var max = 2; 
 
      var v=value.split("."); 
 
      var fstvalue= v[0]; 
 
      var scndValue=v[1]; 
 
      $('.com1').css({ "border-color": "rgb(153, 188, 232)"}); 
 
      if(scndValue.length > max){    
 
     $('div.jGrowl').find('div.jGrowl-notification').parent().remove(); 
 
        $.jGrowl("You can't enter more than 99999.99", { sticky: false }); 
 
        scndValue = scndValue.substring(0,2); 
 
        value=fstvalue+"."+scndValue;     
 
        $(".com1").val(value);       
 
      } 
 
      } 
 
});  
 
};

Пожалуйста, помогите мне, в этом коде, как ограничить значение.

ответ

-1

Не могли бы вы просто использовать математику?

$('form').submit(function(e) { 
    e.preventDefault(); 
    amount = $('.amount').val(); 
    if(amount > 9999.99) { 
    alert('you cannot enter more than 9999.99'); 
    } else { 
    alert('all good here'); 
    } 
}); 

http://jsbin.com/tugimayiro/1/

+0

И если я пишу текст, он саи все здесь хорошо ... – Cosmin

+0

Это не то, что я спрашиваю. Не разрешайте вводить более 99999.99 означает, что я хочу ввести только 8 символов, включая (.) Точку. –

2

Используйте Regex для проверки, если вход соответствует диапазону входного сигнала. Fiddle

([1-9]{1,5}) ограничивает первые 5 символов только цифр и не может начинаться с 0.
(\.([0-9]{2})? ограничивает пользователя только 2 места после ., а также ленивый селектор означает это не применять , Пример: 123 будет совпадать и с 123,23 матчами.

$('input').blur(function() { 
 
    
 
    var pat = /([1-9]{1,5})(\.([0-9]){2})?/g; 
 
    
 
    if (pat.test(this.value)) { 
 
     console.log("You're Good!"); 
 
    } else { 
 
     console.log('No match!'); 
 
    } 
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" />

0

вы можете использовать регулярные выражения вместо этого!

function validateAmount(amount){ 
    var re = /^\d{1,5}(\.\d{1,2})?$/; 
    return re.test(amount); 
} 

Использование:

if(validateAmount(20.2)) console.log('validated'); 
else console.log('validation failed'); 

Explination:

\d //for digits 
{1,5} // min 1 char to max 5 chars 
\. // to escape char . 
\d //again digits 
{0,2} again min 0 to max 2 chars 
? //for optional, as after decimal points are optional, it's needed to be be wrapped in parentheses. 
+0

Здесь я могу ввести более 5 символов до десятичной и более 2 после десятичной. Я не позволю ввести больше, чем больше, чем «99999.99». Если я введу больше, чем означает, что он не позволит войти. Как я могу ограничить? –

+0

вы можете использовать эту функцию «validateAmount» .. см. Скрипку: http://jsfiddle.net/bmwhoLb1/ –

+0

и решение также хорошо работает! –

0

Самый простой способ добавить "input.js" файл первым. А затем используйте следующие 2 строки. Он отлично работает.

var inputConfig = {aSep:'', aNeg:'', mDec:2, mNum:5}; 
 
    $('.com1').autoNumeric(inputConfig);

Смежные вопросы