2011-10-12 28 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