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);
  });
}