Как указано в комментариях, ваша HTML семантика неверна. Это первая причина, почему это не работает. Во-вторых, вы можете использовать jQuerys .text () , чтобы получить «значение» HTML элемента.
Чтобы заставить его работать, см. Пример <table>
элемент теперь перемещен внутри элемента <form>
. В зависимости от ваших потребностей это одно из возможных решений.
$(".form").on('submit', function(event) {
event.preventDefault(); //prevent the forms default action
var surname = $(this).find(".surname");
console.log(surname.text()); // here .text() is the only change in your js code
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form class="form" method="post" action="nextpage.php">
<table>
<tr>
<td class="name">john</td>
<td class="surname">smith</td>
<td>british</td>
<td><button type="submit" class="btn btn-info btn-sm">Submit</button></td>
</tr>
</table>
</form>
<form class="form" method="post" action="nextpage.php">
<table>
<tr>
<td class="name">bob</td>
<td class="surname">doe</td>
<td>american</td>
<td><button type="submit" class="btn btn-info btn-sm">Submit</button></td>
</tr>
</table>
</form>
Подробнее о разрешенных элементах внутри элемента <table>
: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table
Подробнее о разрешенных элементах элементы внутри <form>
теги здесь: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form