jQuery.val()整数数据类型比较

时间:2014-12-07 19:44:21

标签: javascript jquery

我对使用jQuery

的整数比较感到困惑

我有2个输入值。

  • input type =“number”class =“highestBid”value =
  • 输入类型=“数字”min =“0”class =“bid”name =“bid”id =“bid”

所以基本上第二个输入字段中来自用户的输入出价必须始终高于当前的最高出价。

我使用以下jQuery代码来比较这两个代码:

$(function(){
 $('.bid').focusout(function(){
  if($('.bid').val() <= $('.highestBid').val()){
    $('.bidPlaced').prop('disabled', true);
  }
  else{
    $('.bidPlaced').prop('disabled', false);
    $('.buyItNow').prop('disabled', false)
  }
  });

});

代码工作正常,但刚才我发现了一个错误

如果目前的最高出价是:123美元 和用户输入:21美元 该功能无效

但是如果用户键在122美元,代码将工作

我发现jQuery代码只比较了第一个值,在这种情况下是$(1)23到$(2)1。

任何人都可以告诉我jQuery代码有什么问题吗?

谢谢!

1 个答案:

答案 0 :(得分:8)

当您使用jQuery input获取.val()元素的值时,它将始终为stringinput元素是type="number"并不重要。 javascript 值为string

如果您知道您的号码将始终为整数,则可以parseInt

if (parseInt($('.bid').val()) <= parseInt($('.highestBid').val())) {

如果您的号码可能包含小数位,您也可以使用parseFloat代替parseInt

if (parseFloat($('.bid').val()) <= parseFloat($('.highestBid').val())) {
顺便说一句,这不是jQuery,它是javascript语言。所有jQuery都使用javascript以方便的方式读出输入元素的值,并以字符串形式返回给你。

由您了解这些值始终为string s,如果您需要将它们作为number进行比较,请使用parseInt之类的javascript函数, parseFloat在比较之前将它们转换为正确的javascript类型。