JSFiddle - React, Tailwind, and code Playground
HTML
<table id="table-example">
<tr>
<td>Quantidade</td>
<td>Valor Unitário</td>
<td>Sub Total</td>
</tr>
<tr>
<td>
<input type="number" name="qtd[]" />
</td>
<td>
<input type="number" name="valorunitario[]" />
</td>
<td>
<input type="text" name="valorsubtotal[]" readonly />
</td>
</tr>
<tr>
<td>
<input type="number" name="qtd[]" />
</td>
<td>
<input type="number" name="valorunitario[]" />
</td>
<td>
<input type="text" name="valorsubtotal[]" readonly />
</td>
</tr>
<tr>
<td>
<input type="number" name="qtd[]" />
</td>
<td>
<input type="number" name="valorunitario[]" />
</td>
<td>
<input type="text" name="valorsubtotal[]" readonly />
</td>
</tr>
</table>
JavaScript
var inputs = document.querySelectorAll("#table-example input");
for (var i = inputs.length; i--; ) {
attachBlurListener(inputs[i]);
}
function attachBlurListener(element) {
element.addEventListener("keypress", function() {
clearTimeout(this.delay);
this.delay = setTimeout(function() {
var parent = element.parentElement.parentElement;
var quantity = parent.querySelector("input[name='qtd[]']").value;
var unitValue = parent.querySelector("input[name='valorunitario[]']").value;
var total = parent.querySelector("input[name='valorsubtotal[]']");
if (quantity && unitValue) {
total.value = (unitValue * quantity);
}
}, 100);
});
}