2011-10-12 59 views
0

的值考慮以下HTML表格:比較兩個文本字段的使用jQuery


<table id="myTable1"> 
    <tr><td><input type="text" id="quantity1" name="quantity1" /></td></tr> 
    <tr><td><input type="text" id="quantity2" name="quantity2" /></td></tr> 
</table> 

<table id="myTable2"> 
    <tr><td> 
     <input type="text" id="total_quantity" name="total_quantity" /> 
     <input type="text" id="total_quantity_max" name="total_quantity_max" /> 
    </td></tr> 
</table> 


  • total_quantity_max含有恆定的整數值,而
  • total_quantity將根據數量領域
  • total_quantity更新每次KEYUP上觸發數量領域


值保持 SUM

我想要做的是提醒用戶瞬間該值在total_quantity變得大於total_quantity_max中的值。

起初我以爲這可能喜歡的東西來實現:


$('#myTable1 input[id^=quantity]').live('keyup',function() { 
    var n = $("#myTable2 #total_quantity").val(); 
    var m = $("#myTable2 #total_quantity_max").val(); 

    if(n > m) { 
     alert("Alert!"); 
    } 
}); 


但是我使用上面的代碼,如遇到問題;即使total_quantity清除的值不是> total_quantity_max

+1

你比較字符串,而不是實際的數字.. – Rob

+0

什麼是你得到n和m – Sleeperson

回答

2

這是因爲比較是用字符串而不是數字來完成的。嘗試使用parseFloat

$('#myTable1 input[id^=quantity]').live('keyup',function() { 
    var n = $("#myTable2 #total_quantity").val(); 
    var m = $("#myTable2 #total_quantity_max").val(); 

    if(parseFloat(n) > parseFloat(m)) { 
     alert("Alert!"); 
    } 
}); 
+0

啊弦。我總是認爲這些會自動讀取爲整數。感謝代碼現在的工作! –

2

使用parseInt - val將返回一個字符串,並且字符串具有與整數不同的比較規則。

if(parseInt(n, 10) > parseInt(m, 10)) { 
    alert("Alert!"); 
} 
+1

實際值始終使用'parseInt函數(N,10)'。如果n是'09'而m是'04',那麼你的if語句就會失敗。 – riwalk

+0

@ Stargazer712很好。 – Dennis

+0

那麼,他應該使用TryParse,如果他的字符串包含任何其他數字,它將失敗無論如何 – Rob