JSFiddle - React, Tailwind, and code Playground
HTML
<div class="row">
<div>
<input class="units" type="text" placeholder="Number of units"/>
</div>
<div>
<input class="price" type="text" placeholder="Unit price"/>
</div>
<div>
<input class="rate" type="text" placeholder="Discount rate %"/>
</div>
<div>
<input class="total" type="text" placeholder="Total" disabled/>
</div>
</div>
<div class="row">
<div>
<input class="units" type="text" placeholder="Number of units"/>
</div>
<div>
<input class="price" type="text" placeholder="Unit price"/>
</div>
<div>
<input class="rate" type="text" placeholder="Discount rate %"/>
</div>
<div>
<input class="total" type="text" placeholder="Total" disabled/>
</div>
</div>
CSS
.row div{display:inline-block;}
JavaScript
function calculate(units, price, discount) {
if (discount) {
if (discount < 0 || discount > 100) {
discount = 0;
}
} else {
discount = 0;
}
return (units * price) * (1 - (discount / 100));
}
$('input').on('change', function () {
var scope = $(this).closest('.row'),
units = $('.units', scope).val(),
price = $('.price', scope).val(),
discount = $('.rate', scope).val(),
total = $('.total', scope);
if ($.isNumeric(units) && $.isNumeric(price) && ($.isNumeric(discount) || discount === '')) {
total.val(calculate(units, price, discount));
} else {
total.val('');
}
});