2015-06-23 7 views
0

Я хочу рассчитать общие цены продуктов с использованием входных текстовых значений.Как вычислить два значения входного текста в jQuery

HTML-кода и Javascript фрагмент следующим образом:

$('input').keyup(function(){ // run anytime the value changes 
 

 
var firstValue = parseFloat($('#value1').val()) || 0; // get value of field 
 
var secondValue = parseFloat($('#value2').val()) || 0; // convert it to a float 
 

 

 

 
var subtotal1 = firstValue * 10; 
 
var subtotal2 = secondValue * 15; 
 

 
    
 
$('#subtotal1').html(subtotal1); // output it 
 
$('#subtotal2').html(subtotal2); // output it 
 
$('#finaltotal').html(subtotal1 + subtotal2); // output it 
 
});
<!-- Product 1 --> 
 
\t \t <div> \t \t \t \t \t \t 
 
\t \t \t <label>Product 1</label> 
 
\t \t \t <div><input type="text" id="value1"><?php echo ' x 10USD = ';?><span id="subtotal1"></span>USD</div> 
 

 
<!-- Product 2 --> 
 
\t \t <div> \t \t \t \t \t \t 
 
\t \t \t <label>Product 2</label> 
 
\t \t \t <div><input type="text" id="value2"><?php echo ' x 15USD = ';?><span id="subtotal2"></span>USD</div> 
 
\t 
 
\t <!-- Total --> 
 
\t \t <div> \t \t \t \t \t \t 
 
\t \t \t <label>Total:</label> 
 
\t \t \t <div><span id="#finaltotal"></span>USD</div> 
 
\t </div>

Конечный результат должен быть чем-то вроде следующего: [1] х 10USD = 10USD [2] х 15USD = 30USD Итого: 40USD

Однако приведенный выше код не работает должным образом. Есть ли хороший способ сделать это?

Благодарим за помощь.

+0

Вы должны уточнить «не работает должным образом». В противном случае нам не нужно знать, что происходит. – suvartheec

+1

удалить "#" из #finaltotal id – Robin

+0

@survartheec. Спасибо. В следующий раз я буду осторожен. – Peter

ответ

0

У вас была опечатка. <span id="#finaltotal"></span> должен быть <span id="finaltotal"></span>

Обновленный фрагмент:

$('input').keyup(function() { // run anytime the value changes 
 
    var firstValue = parseFloat($('#value1').val()) || 0; // get value of field 
 
    var secondValue = parseFloat($('#value2').val()) || 0; // convert it to a float 
 
    var subtotal1 = firstValue * 10; 
 
    var subtotal2 = secondValue * 15; 
 
    $('#subtotal1').html(subtotal1); // output it 
 
    $('#subtotal2').html(subtotal2); // output it 
 
    var finalAnswer = (subtotal1 + subtotal2).toString(); 
 
    $('#finaltotal').html(finalAnswer.replace(/\B(?=(\d{3})+\b)/g, ",")); // output it 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<!-- Product 1 --> 
 
<div> 
 
    <label>Product 1</label> 
 
    <div> 
 
    <input type="text" id="value1"> 
 
    <?php echo ' x 10USD = ';?><span id="subtotal1"></span>USD</div> 
 

 
    <!-- Product 2 --> 
 
    <div> 
 
    <label>Product 2</label> 
 
    <div> 
 
     <input type="text" id="value2"> 
 
     <?php echo ' x 15USD = ';?><span id="subtotal2"></span>USD</div> 
 

 
    <!-- Total --> 
 
    <div> 
 
     <label>Total:</label> 
 
     <div><span id="finaltotal"></span>USD</div> 
 
    </div>

+0

Большое спасибо. Я должен был быть более осторожным ... – Peter

+0

Большое спасибо. У меня есть другой вопрос: если общая стоимость превышает 1000 долларов США, могу ли я вставить тысячу разделителей (запятая)? – Peter

+0

Вы можете сделать это с помощью регулярного выражения. '" 10000000 ".replace (/ \ B (? = (\ D {3}) + \ b)/g,", ")'. Я обновил свой фрагмент примера. –

1

Удалить хэш из атрибута ид, id="finaltotal"

<label>Total:</label> 
<div><span id="#finaltotal"></span>USD</div> 

       ^-----------remove----------- 

Это работает!

http://jsfiddle.net/4edbv96r/

+0

Большое спасибо! – Peter

Смежные вопросы