Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 条件检查是间歇进行的_Javascript_Jquery - Fatal编程技术网

Javascript 条件检查是间歇进行的

Javascript 条件检查是间歇进行的,javascript,jquery,Javascript,Jquery,功能: 用户必须在收据详细信息页面中输入他们的支出,根据他们是否选中复选框,最低支出条件将有所不同。如果他们选中,最低支出为120美元,否则将为150美元 页面中有2个收据详细信息文本字段,因此,这些将是以下检查条件: 一,。如果收据\字段\ 1大于120或收据\字段\ 2大于120或收据\字段\ 1和收据\字段\ 2之和大于120->用户可以提交并导航到下一页。否则,将出现错误消息 二,。如果收据\字段\ 1大于150或收据\字段\ 2大于150或收据\字段\ 1和收据\字段\ 2之和大于15

功能:

用户必须在收据详细信息页面中输入他们的支出,根据他们是否选中复选框,最低支出条件将有所不同。如果他们选中,最低支出为120美元,否则将为150美元

页面中有2个收据详细信息文本字段,因此,这些将是以下检查条件:

一,。如果收据\字段\ 1大于120或收据\字段\ 2大于120或收据\字段\ 1和收据\字段\ 2之和大于120->用户可以提交并导航到下一页。否则,将出现错误消息

二,。如果收据\字段\ 1大于150或收据\字段\ 2大于150或收据\字段\ 1和收据\字段\ 2之和大于150->用户可以提交并导航到下一页。否则,将出现错误消息

问题:

此时,以下行为的检查条件正确且一致:

一,。当收据\字段\ 1或收据\字段\ 2大于规定值120/150时,它将允许用户提交并导航到下一页,否则,错误消息

我遇到的问题是最终校验和条件不一致:这意味着,如果校验和小于或大于规定值120/150,它有时能够解码和计算,如果校验和小于或大于120/150,它有时无法解码和计算

因此,我不知道为什么校验和条件会如此不一致。请帮忙

//美国运通卡用户 如果$'AmaxCardField'.is':已选中{ //检查输入值字段是否为$120或更多,否则,通知最小支出为120 如果$ReceiptField_1.val>=120 | |$ReceiptField_2.val>=120 | |$ReceiptField_1.val+$ReceiptField_2.val>=120{ //情况过去了 console.logAmex用户和花费超过120; alertYou是美国运通会员,花费超过120美元; }否则{ //告知最低消费为120英镑 你需要花费超过120英镑; } }否则的话!$'AmaxCardField:已选中。长度{ //检查输入值字段是否为150新元或以上,否则,告知最低支出为150新元 如果$ReceiptField_1.val>=150 | |$ReceiptField_2.val>=150 | |$ReceiptField_1.val+$ReceiptField_2.val>=150{ //情况过去了 console.logNon-Amex用户,花费超过150新元; alertYou是美国运通会员,花费超过150英镑; }否则{ //告知最低支出为150新元 你需要花费超过120英镑; } } 请选择店铺。。。 请选择店铺。。。
将字符串解析为数字

parseInt($("#ReceiptField_1").val()) + parseInt($("#ReceiptField_2").val()) >= 150

注意:您可能需要执行一些选择器缓存

来自文本字段的任何值始终是字符串

所以

即使输入数字,也将返回字符串

这意味着对于任何数值运算,首先必须将它们转换为整数,如

var rf1 = parseInt($("#ReceiptField_1").val())
你的情况会变为

var rf1 = parseInt($("#ReceiptField_1").val());
var rf2 = parseInt($("#ReceiptField_2").val());

if((rf1 >= 150 || rf2 >= 150) || ((rf1+rf2)>=150))
现在,

为什么它对我有用

$("#ReceiptField_1").val() >= 120
$("#ReceiptField_2").val() >= 120
因为没有超过该值的操作。值将按原样进行比较


但如果您添加2个值,则将是字符串串联而不是加法,因为这两个值都是字符串而不是数字。

谢谢!!非常详细的解释
var rf1 = parseInt($("#ReceiptField_1").val());
var rf2 = parseInt($("#ReceiptField_2").val());

if((rf1 >= 150 || rf2 >= 150) || ((rf1+rf2)>=150))
$("#ReceiptField_1").val() >= 120
$("#ReceiptField_2").val() >= 120