我正在上学的网站,我需要制作一个购物车。当我检查所要求的数量是否比可用数量更大时,即使不是,也会返回true。例如,3> 12是真的,我得到错误信息。 我拼错了“可用”..我知道:( 这是我的功能:
function add_to_cart() {
jQuery ('#modal_errors').html("");
var size = jQuery('#size').val();
var quantity = jQuery('#quantity').val();
var avaliable = jQuery('#avaliable').val();
var error = '';
var data = jQuery('#add_product_form').serialize();
if( size == '' || quantity == '' || quantity == 0 ){
error +='<p class = "text-danger text-center">You need to select a size and quantity.</p>';
jQuery('#modal_errors').html(error);
return;
}
else if(quantity > avaliable){
error +='<p class = "text-danger text-center">There are only '+avaliable+' avaliable and you asked for '+quantity+'.</p>';
jQuery('#modal_errors').html(error);
return;
}
}
这将返回消息(对于我的情况):“只有12个可用,你要求3。
这可能是一个noob错误,但我无法弄明白。有什么帮助吗?
修改 - &gt;&gt;
使用
var quantity = Number.parseInt(jQuery('#quantity').val());
var avaliable = Number.parseInt(jQuery('#avaliable').val());
它有效,但现在再次进入雾中:D
我得到像这样的值
<div class="form-group">
<div class="col-xs-3"><label for="quantity">Quantity:</label>
<input type="number" class="form-control" id="quantity" name="quantity" min="0"></div><br><div class="col-xs-9"> </div>
</div>
输入类型是数字我假设我不需要从字符串转换为数字。 输入类型编号=不是可以比较或乘法的实际数字或其他什么?
感谢您的回答:)
答案 0 :(得分:7)
因为您的quantity
和avaliable
是字符串,而不是数字。比较是通过字符串进行的。
尝试
var quantity = Number.parseInt(jQuery('#quantity').val());
var avaliable = Number.parseInt(jQuery('#avaliable').val());
<强>被修改强>
或者你只能在条件中进行解析,如果你想将它们用作字符串
else if(Number.parseInt(quantity) > Number.parseInt(avaliable)){
}
答案 1 :(得分:0)
如其他地方所述,您需要将字符串转换为数字,但是一旦执行此操作,您需要检查它们是否已成功转换为数字,尤其是在您检查字符串不为空时。 isNaN
在这里是一个有用的功能。您可以检查字符串,然后检查数字,例如:
function add_to_cart() {
var error = "";
var size = jQuery('#size').val();
var quantity = jQuery('#quantity').val();
var avaliable = jQuery('#avaliable').val();
if (size === '' || quantity === '' || avaliable === '' ) {
error += '<p class = "text-danger text-center">You need to select a size and quantity.</p>';
} else {
var sizeNum = Number.parseInt(size),
quantityNum = Number.parseInt(quantity),
avaliable = Number.parseInt( avaliable );
if ( isNaN( quantityNum ) || quantityNum === 0 || isNaN( sizeNum ) || sizeNum === 0 ) {
error += '<p class = "text-danger text-center">You need to select a size and quantity.</p>';
}
else if ( quantityNum > avaliableNum ) {
error += '<p class = "text-danger text-center">There are only ' + avaliable + ' avaliable and you asked for ' + quantity + '.</p>';
}
}
jQuery('#modal_errors').html(error);
}