2013-03-06 82 views
0

我有一個輸入字段,它被限制爲6個字符。如何驗證我的輸入字段,以便用戶不能輸入一個以上的小數點(即19..12),再加上它只能保留兩位小數(即19.123)?限制輸入字段以一個小數點和兩個小數位

這是我輸入字段

<input type="text" name="amount" id="amount" maxlength="6" autocomplete="off"/><span class="paymentalert" style="color:red;"></span> 

這是我的驗證腳本。

$(function(){ 
$("#amount").keypress(function(e) { 
    var chr = String.fromCharCode(e.which); 
    if (".1234567890NOABC".indexOf(chr) < 0) 
     return false; 
}); 
}); 

$("#amount").blur(function() { 
    var amount = parseFloat($(this).val()); 
    if (amount) { 
     if (amount < 40 || amount > 200) { 
      $("span.paymentalert").html("Your payment must be between £40 and £200"); 
     } else { 
      $("span.paymentalert").html(""); 
     } 
    } else { 
     $("span.paymentalert").html("Your payment must be a number"); 
    } 
}); 

約拿

+0

兩個問題:(1)你是否想要它,如果他們有一個小數點後面必須有2位數字? (2)從錯誤信息中,小數點前必須至少有2位數字,但不能超過3位數字,是否正確? – talemyn 2013-03-06 16:25:36

+0

任何不使用http://digitalbush.com/projects/masked-input-plugin/的理由? – 2013-03-06 16:25:56

+0

@talemyn 1)是2)正確。 – Jonah 2013-03-06 16:34:26

回答

3

這應該這樣做:

var ok = /^\d*\.?\d{0,2}$/.test(input); 

(如果我理解正確的,你不想點後超過2個位數)

的代碼將因此是:

$("#amount").blur(function() { 
    var input = $(this).val(); 
    if (/^\d*\.?\d{0,2}$/.test(input)) { 
     var amount = parseFloat(input); 
     if (amount < 40 || amount > 200) { 
      $("span.paymentalert").html("Your payment must be between £40 and £200"); 
     } else { 
      $("span.paymentalert").html(""); 
     } 
    } else { 
     $("span.paymentalert").html("Your payment must be a number"); 
    } 
}); 
+0

我會在哪裏將它放在我的腳本中? – Jonah 2013-03-06 16:36:16

+0

@Jonah我編輯更清楚地把它放在哪裏。 – 2013-03-06 16:39:22

2

假設:

  1. 有必須有一個小數點後2位數字,並
  2. 必須有小數點之前至少2位,但不超過3個數字

你用來匹配它的代碼是:

var value = $(this).val; 
value.match(/^\d{2,3}(\.\d{2})?$/i); 
相關問題