2015-02-06 58 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 2015-02-06 15:17:39

+0

它不是我問。不允許輸入超過99999.99的手段,我只想輸入8個字符,包括(。)點。 – 2015-02-07 09:13:33

2

使用正則表達式來測試,如果你輸入的輸入範圍相匹配。 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」。如果我輸入的不僅意味着它不允許進入。我怎樣才能限制? – 2015-02-07 14:05:02

+0

你可以使用那個函數「validateAmount」..參見小提琴:http://jsfiddle.net/bmwhoLb1/ – 2015-02-08 08:27:35

+0

並且解決方案也運行良好! – 2015-02-08 08:52:10

0

最簡單的方法是添加 「input.js」 文件中的第一。然後使用以下2行。它的工作完美。

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