比较输入值与0跟踪

时间:2013-01-08 07:29:34

标签: javascript jquery

我发现当jQuery获得0(例如100)的跟踪值时,它将省略它。因此,如果我比较5> 100,则结果为真。那么我该如何解决这个问题呢? 这是HTML代码:

<form id="target">
    <input type="text" id="max"  value="100"/>
    <input type="text" id="number" />
    <input id="submit" type="submit" value="submit" />
</form>

这是jquery:

$('#target').submit( function() {
  var a = $("#number").val();
  var b = $("#max").val();
  if( a > b){
     alert("exceed limit"); 
  }

return false;
});

在这里你可以看到demo:http://jsfiddle.net/yqMGG/91/

3 个答案:

答案 0 :(得分:3)

您需要比较数值,而不是字符串值。 .val()函数的输出是根据DOM Level 2的DOMString值,其中包含:

interface HTMLInputElement : HTMLElement {
  ...
  attribute DOMString       value;
  ...
}

所以你的(5> 100)测试真的是"5" > "100"这是真的,因为字符串按字典顺序进行比较。

解决方案是改变

if( a > b){

if(+a > +b){

+前缀运算符将其参数强制转换为数字。

答案 1 :(得分:0)

使用parseFloat(),否则将值视为字符串。

$('#target').submit( function() {
  var a = parseFloat($("#number").val());
  var b = parseFloat($("#max").val());
  if( a > b){
     alert("exceed limit"); 
  }

    return false;
});

参见 Demo

答案 2 :(得分:0)

您可以将其乘以1以将其从字符串转换为数字,或使用parseInt

var a = $("#number").val() * 1;

OR

var a = parseInt($("#number").val(), 10);

parseInt函数的第二个参数是基数。