2011-11-23 55 views
1

我正在使用一個priceFormat插件,它自動在輸入字段中放置逗號和小數點,所以當用戶鍵入1000000時,它將顯示爲1,000,000.00。我想要做的是創建一些類型的驗證,如果用戶提供的值是1,000,000或更多,將會觸發。驗證輸入值是否爲1,000,000.00或更多

這是我有:

 
$('input#amount').priceFormat({limit: 12}).bind().blur(function() { 

    if($('#amount').val() >= 1000000){      

    // pop up notification       

}); 

它不會驗證,因爲我猜的輸入值包含一個字符串,而不是數字的?

回答

4

嘗試parseInt -

if(parseInt($('#amount').val().replace(/,/g,""),10) >= 1000000){ 

由於加藤正確地指出,你還需要將它傳遞給parseInt之前移除字符串中的逗號。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt

+0

這隻會解析到第一個逗號? – Kato

+0

@Kato正則表達式上的'g'修飾符會導致它刪除所有逗號。 – 2011-11-23 18:36:21

+0

@Kato - 感謝您指出這一點,我已經更新了答案。 – ipr101

1

我想包parseIntparseFloat圍繞價值:

if (parseInt($("#amount").val()) >= 1000000){ 
    //validated 
} 
1

是的,這是因爲.val()是一個字符串。您應該使用parseInt

2
if(parseInt($('#amount').val.replace(/[^0-9.]/g', '')) >= 1000000) { ... } 

您也不妨使用一個隱藏字段來存儲實際值,並對其進行驗證;這樣你的格式化值就不會傳遞給服務器(他們可以把其他字符放在那裏實際上是無效的)。

1

你想用什麼都替換,,然後解析它,否則它會在逗號分割並使用之前的值,所以另外明智的將是1而不是1000000

所以:

if (parseInt($("#amount").val().replace(/,/g, "")) >= 1000000){ 
//validated 
} 
2

除了解析它作爲一個int,你需要通過刪除,逗號將其轉換回一個正常的數字。

if(parseInt($("#amount").val().replace(/[,$]/g, ""),10)) > 1000000){ 
} 
+0

+1僅作爲唯一的人實際使用parseInt的基數10。 –

0

Javascript比較可以使用字符串和數字,例如這些都是有效的,雖然令人困惑。

"10" > 1 ==> true 
"10" > 11 ==> false 
"10000" > 10 ==> true 
"10 000" > 10 ==> false 

但你的問題是格式化字符串中的點和逗號。將它們解析掉,以便正確轉換爲數字。

if( $('#amount').val().match(/([0-9,]+)/)[0].replace(/, /g,'') > 1E6) { 
    ... 

這將字符串例如「10,000.00」到「10000」,並將其與1000 000進行比較。