区块报价
我有一个表单,它有三个字段,两个文本字段和一个选择字段。如果我在一个文本字段中输入价格,并从下拉方式中选择一个折扣值,则销售价格应自动显示在文本字段中。价格计算在jquery的变更功能中。假设销售价格有一些小数值,在单击选择框上的选项卡时,销售价格值中的小数点被0取代。我不知道为什么会这样。有人能帮我吗?
区块报价
<div class="form-group">
<label class="col-sm-3 control-label">Price<span style="color:red">*</span></label>
<div class="col-sm-6">
<input type="text" class="form-control" id="price" name="price" onkeyup="this.value=this.value.replace(/[^0-9]/,'');" maxlength="10"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Discount</label>
<div class="col-sm-6">
<select name="discount" class="form-control" id="discount">
<option value="0">-- Select Discount Range --</option>
<?php
$i=5;
while($i<=75){
?>
<option value="<?php echo $i; ?>"><?php echo $i."%"; ?></option>
<?php $i=$i+5; } ?>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Sale Price</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="sale" name="sale_price" onkeyup="this.value=this.value.replace(/[^0-9]/,'');" maxlength="10" readonly>
</div>
</div>
我的jquery是
$('#discount').change(function(){
var price = $('#price').val();
var disc = $(this).val();
var sale = (parseInt(price)-(parseInt(price) * (parseInt(disc) / 100) ));
$('#sale').val(sale);
});
您需要使用函数parseFloat((,而不是ParseInt((。Int是一个不能得到十进制值的整数。
2.53 (Float value)
5 (Int value)
-8 (Int value)
-5.98 (Float value)
当你做这个
var sale = (parseInt(price)-(parseInt(price) * (parseInt(disc) / 100) ));
示例:价格等于2.50
parseInt(2.5(->将给出0
0-0*10/100=0
编辑:
我明白了,在这行
this.value=this.value.replace(/[^0-9]/,'');
您不允许或,字符。