只有在

时间:2018-04-14 16:55:53

标签: javascript php jquery

我有一个表单,可让用户选择一定数量的可用产品。如果用户选择了数字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语句才显示它不应该是什么时候。我不知道为什么会这样。

1 个答案:

答案 0 :(得分:0)

由于字段值为字符串,您需要比较字符串,而不是数字。使用+parseInt

将值转换为数字
var quantity = parseInt(jQuery('#quantity').val());
var available = parseInt(jQuery('#available').val());

在这种情况下,您还应该查找将空字符串或某些非数字字符串转换为数字时发生的NaN值。