JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<h1>Martix editor</h1>
      <ol class="text-danger">
        <li>Generate the matrix</li>
        <li>Click on field to edit!</li>
      </ol>

      <button class="btn btn-success" id="matrix-generator">(Re-)Generate 10 x 10 matrix</button>
      <hr/>
      <div id="matrix-wrapper"></div>
      <button class="btn btn-danger" id="matrix-submit">Отправить</button>

JavaScript

$(document).on('click', '#matrix-generator', function(){
    $("#matrix-wrapper").html(genMatrix(10, 10));
});


function genMatrix(){
    var table = document.createElement('table');
    //var $table = $('<table />'); 
    var i = 10; // number of rows
//мы ведь изначально знаем размер матрицы? для чего while? for (..) очевиднее же
    while (i-- > 0) {
        var j = 10; // number of cols
        var tr = table.insertRow();
	// var $tr = $('<tr />').appendTo($table);
        while (j-- > 0) {
            var td = tr.insertCell();
	    // $td = $('<td />').appendTo($tr);
            var rnd = Math.floor((Math.random() * 100) + 1);
	    //здесь нужна праверка на уникальность

            td.appendChild(document.createTextNode(rnd));
            td.className = 'editable';
            td.id = i + "-" + j; //идентификатор не может начинаться с числа

	    // $td.append(rnd).data('i', i).data('j', j)
            
        }
    }
    return table;
    //$table.appendTo($("#matrix-wrapper"));
}

$(document).on('click', '.editable', function(){
    var name = $(this).text();
    var thisId = $(this).attr('id');
    $(this).html('');
    $('<input></input>')
        .attr({
            'size': 3,
            'type': 'text', //может number?
            'name': 'cell-n-' + thisId, // у нас ведь двумерный массив и мы хотим отправить его на сервер стандартным способом, может лучше cell[i][j]
            'id': 'cell-n-' + thisId,
            'class': 'editable-input',
            'value': name
        })
        .css("position", "absolute")
        .appendTo($(this));
    
    $('#cell-n-' + thisId).focus();
});

$(document).on('blur','.editable-input', function() {
    var name = $(this).val();
    $(this).parent().text(name); // kind of bad idea =\
});

$(document).on('click', '#matrix-submit', function() {
    
    var exportObj = {};

    // Very simple validation
    if ($(".editable").length > 0) {
        
        // parse values from DOM
       ...