Необходимо добавить не конкатенацию с долларом США

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

Когда пользователь меняет выбор, то: #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());
} 
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
0
44
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

удаление знака доллара дает мне "30.0020.00"

Anthony 27.05.2018 13:05

тогда вам нужно сначала разобрать его с помощью parseFloat(var) :)

Adrian Baginski 27.05.2018 13:08

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

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

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

Ответ принят как подходящий

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

function calculate(e)
{
    var cost = parseInt($('#cost').val().replace('$',''));
    var donation = parseInt($('#donation').val().replace('$',''));
    var total = cost + donation;
    $('#total').val('$'+ total );
} 

Другие вопросы по теме