Нужно добавить не объединять с долларами США - PullRequest
0 голосов
/ 27 мая 2018

Я знаю, что этот вопрос был задан, но каждый сценарий варьируется настолько, чтобы запутать меня.

Когда пользователь меняет выбор, тогда: #cost + #donation = # total

Когдатогда пользователь вводит #donation: #cost + #donation = # total

У меня это работает, но общая сумма объединяется в "30,00 $ 20,00" вместо добавления 2 к "50,00 $"

Я считаю, что parseFloat () имеет к этому непосредственное отношение.

Спасибо!

<select class="custom-select d-block w-100" id="type" name="type" required>

<input type="text" class="form-control" id="cost" name="cost" disabled>

<input type="text" class="form-control" id="donation" name="donation">

<input type="text" class="form-control" id="total" name="total" disabled>

Это то, что я собрал воедино:

    $("#type").change(function(){
    // this changes the input id=cost to match the select field id=type
    var typevalue = $( "#type" ).val();
    $('input[name=cost]').val(typevalue);


});

 $('#donation').keyup(function() {

   $(this).val(function(i,v) {
     return '$' + v.replace('$',''); //remove exisiting, add back.
   });

 });

$(document).ready(function(){
    $('#type').change(calculate);
    $('#donation').keyup(calculate);

});

function calculate(e)
{
    $('#total').val($('#cost').val() + $('#donation').val());
} 

Ответы [ 3 ]

0 голосов
/ 27 мая 2018

Вы можете заключить свое поле ввода в <label> и добавить туда знак $.

Я бы также использовал <input type='number'>, чтобы упростить процесс для ваших клиентов.

Также измените селектор для стоимости на $('#cost')

0 голосов
/ 27 мая 2018

Преобразовать значения в целое или с плавающей точкой, чтобы убедиться, что вы работаете с числами:

function calculate(e)
{
    var cost = parseInt($('#cost').val().replace('$',''));
    var donation = parseInt($('#donation').val().replace('$',''));
    var total = cost + donation;
    $('#total').val('$'+ total );
} 
0 голосов
/ 27 мая 2018

Попробуйте удалить знак доллара из числа перед добавлением: String.replace("$",""), а затем проанализируйте его, используя parseFloat(value)

...