验证文本框中的输入金额

时间:2015-02-06 15:07:19

标签: jquery jquery-ui

我在列中有一个文本框" amount"。在这里,我想在小数点前输入5个数字,在小数点后输入2个数字,如下所示" 99999.99"。我想在jquery中这样做。我使用以下代码,



editor: { type:"textbox",style:'z-index:10000;position:relative;',init:filterhandler,cls:'com1',},
  
  
    var filterhandler = function (ui) { 			
    $('.com1').keyup(function(){  
    var value = $(".com1").val();  
    if(value.indexOf('.') === -1){ 
   	var max=99999;
   	if( value > max){
   		$('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);               
   	}   
       }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);                        
           } 
          }
});      
};




请帮帮我,在此代码中如何限制值。

4 个答案:

答案 0 :(得分: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" />
&#13;
&#13;
&#13;

答案 1 :(得分: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');

说明:

\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.

答案 2 :(得分:0)

最简单的方法是首先添加“input.js”文件。然后使用以下2行。它工作得很好。

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

答案 3 :(得分:-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/