1

我发现当 jQuery 得到一个值为 0(例如 100)trail 的值时,它会忽略它。因此,如果我比较 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;
});

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

4

3 回答 3

3

您需要比较数值,而不是字符串值。该.val()函数的输出是根据DOM Level 2的 DOMString 值,它表示:

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

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

解决方法是改变

if( a > b){

if(+a > +b){

+前缀运算符将其参数强制为一个数字。

于 2013-01-08T07:32:00.483 回答
0

使用parseFloat(),否则这些值被视为字符串。

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

    return false;
});

演示

于 2013-01-08T07:31:29.520 回答
0

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

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

或者

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

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

于 2013-01-08T07:50:30.843 回答