我有一个表单,可让用户选择一定数量的可用产品。如果用户选择了数字4到9而有超过10个可用,则会显示我的验证语句。我已经使用console.log查看数字是否正确提交且一切看起来都很好,if语句不应该出现,因为4-9并不比可用的数字大。< / p>
表格:
<form action="add_cart.php" method="POST" id="add_product_form">
<input type="hidden" name="product_id" value="<?=$id;?>">
<input type="hidden" name="available" id="available" value="">
<div class="form-group">
<div class="col-xs-9">
<label for="quantity">Quantity</label>
<input type="number" class="form-control" id="quantity"
name="quantity" min = "0" value="">
</div>
<div class="col-xs-9"></div>
<br><br><br>
</div>
<div class="form-group">
<div class="col-xs-9">
<label form="size">Size:</label>
<select name="size" id="size" class="form-control">
<option value="" disabled selected hidden>Choose Size</option>
<?php
foreach ($size_array as $string) {
$string_array = explode(':', $string);
$size = $string_array[0];
$available = $string_array[1];
if ($available > 0) {
echo '<option value="'.$size.'" data-available="'.$available.'">'.$size.'
('.$available.' available)</option>';
}
}
?>
</select>
</div>
</div>
<option value="28" ></option>
</form>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-default" onclick="closeModal();">Close</button>
<button class="btn btn-warning" onclick="add_to_cart(); return
false;">Add To Cart <span class=" glyphicon glyphicon-shopping-cart"></span> .
</button>
</div>
</div>
jQuery('#size').change(function(){
var available = jQuery('#size option:selected').data("available");
jQuery('#available').val(available);
});
按下提交按钮时,此方法运行:
function add_to_cart(){
var size = jQuery('#size').val();
var quantity = jQuery('#quantity').val();
var available = jQuery('#available').val();
var error = '';
var data = jQuery('#add_product_form').serialize();
jQuery('#modal_errors').html("");
if(size == '' || quantity == '' || quantity == 0 ){
error += '<p class="text-danger text-center"> You must choose a quantity.
</p>';
jQuery('#modal_errors').html(error);
return;
}
else if (quantity > available ){
error +='<p class="text-danger text-center"> Sorry, it looks like we only have
'+available+' available at this time.</p>';
jQuery('#modal_errors').html(error);
}
else{
jQuery.ajax({
url: '/onlineStore/admin/parsers/add_cart.php',
method: 'POST',
data: data,
success: function(){
location.reload();
},
error: function(){alert("something went wrong.");}
});
}
}
只有选择了数字4到9时,(数量&gt;可用)if语句才显示它不应该是什么时候。我不知道为什么会这样。
答案 0 :(得分:0)
由于字段值为字符串,您需要比较字符串,而不是数字。使用+
或parseInt
var quantity = parseInt(jQuery('#quantity').val());
var available = parseInt(jQuery('#available').val());
在这种情况下,您还应该查找将空字符串或某些非数字字符串转换为数字时发生的NaN
值。