0

我对客户购买的许可证数量与他们使用的数量进行了非常非常简单的逻辑测试:

else if(utype == "3"){
           var tech_lic = $("#technician_lic").val();
           console.log('tech lic = ' + tech_lic)
           var tech_allow = $("#technician_lic_allow").val();
           console.log('tech allow = ' + tech_allow)
           if(tech_lic >= tech_allow)
            {
              alert("You must purchase more licenses to create this Technician");
              return false;
            }

我投入了 console.log 语句试图调试它——通常它们不存在。

当我单击“添加”按钮时的 Console.log:

tech lic = 4    application.js:262
tech allow = 100    application.js:264

然后我们在窗口中点击“您必须购买更多许可证”警报。

有没有搞错?

4 >= 100 如何评估为真?

4

5 回答 5

7

因为.val返回一个字符串。 '4'确实大于或等于'100'。首先将值转换为数字(如果您知道出于此比较的目的它们始终是数字)。

if (+tech_lic >= +tech_allow)
于 2013-06-05T22:28:52.747 回答
3

您将它们评估为字符串,因此“4”大于“100”。

在比较之前,您需要将它们转换为整数:

var tech_lic = parseInt($("#technician_lic").val(), 10);
var tech_allow = parseInt($("#technician_lic_allow").val(), 10);
于 2013-06-05T22:29:32.193 回答
1

字符串“4”大于“100”,而数字 4 小于 100。

于 2013-06-05T22:27:55.067 回答
1

这不是4 >= 100真的,这"4" >= "100"是真的。

您获得的值是字符串,因此它们将在词法上进行比较,而不是在数字上。

将值解析为数字:

var tech_lic = parseInt($("#technician_lic").val(), 10);
var tech_allow = parseInt($("#technician_lic_allow").val(), 10);
于 2013-06-05T22:29:34.323 回答
0

这样做: -

if(Number(tech_lic) >= Number(tech_allow))
{
   // Do your stuff
}
于 2013-06-05T22:29:23.813 回答