在html表单中单击选项卡时值会发生变化


Value changes on clicking tab in html form

区块报价

我有一个表单,它有三个字段,两个文本字段和一个选择字段。如果我在一个文本字段中输入价格,并从下拉方式中选择一个折扣值,则销售价格应自动显示在文本字段中。价格计算在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]/,'');

您不允许字符。