Изменение значения при нажатии на вкладку в форме html

#php #jquery #html

#php #jquery #HTML

Вопрос:

Blockquote

У меня есть форма, в которой есть три поля, два текстовых поля и одно поле выбора. Если я ввожу цену в одно текстовое поле и выбираю одно значение скидки из выпадающего списка, цена продажи должна автоматически отображаться в текстовом поле. Расчет цены находится в функции изменения jquery. Предположим, если цена продажи имеет некоторое десятичное значение, при нажатии tab в поле выбора десятичная точка заменяется на 0 в поле цены продажи. Я не знаю, почему это происходит. Кто-нибудь может мне помочь?

Blockquote

 <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);
        });
  

Комментарии:

1. можете ли вы показать нам свой код, пожалуйста? Вы можете использовать JsFiddle для di

2. Я отредактировал свой пост с помощью своего кода

Ответ №1:

Вам нужно использовать функцию 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]/,'');
  

Вы не разрешаете.или, символ.

Комментарии:

1. Отсутствие parseFloat также дает тот же результат.

2. Хорошо, попробуйте поставить какую-нибудь консоль. регистрируйтесь во время события .change. Выведите все значения в каждой строке и отправьте мне обратный вызов

3. На самом деле я правильно определяю цену продажи. Если цена продажи имеет десятичную точку, и я нажимаю tan в поле выбора скидки, десятичная точка заменяется на ноль