Как объяснить кнопке расположение ячейки td?
Добрый день. Есть таблица, по нажатию на строку нужно заполнить следующую ячейку. Сейчас заполняется так:
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<table class="table table-bordered table-hover testTable">
<thead>
<tr class="bg-info text-white">
<td>Ячейка 1</td>
<td>Ячейка 2</td>
</tr>
</thead>
<tbody>
<tr>
<td>тест</td>
<td></td>
</tr>
<tr>
<td>тест</td>
<td></td>
</tr>
</tbody>
</table>
<script>
$('.testTable').on('click', 'td', function () {
$(this).next('td').html(1);
});
</script>
В реалиях надо заполнить ее нажав на другую кнопку. То есть, пользователь жмет на ячейку в таблице, у него открывается другое окно. В этом окно есть кнопка ОК. По нажатию на нее должно выполнится $(this).next('td').html('запись от пользователя'); .Только this не кнопки ok, а ячейки куда он нажимал до этого. Не пойму как это сделать :-? |
|
рони,
Спасибо, решил просто вынесением расположения ячейка за функцию:
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<div class="row">
<div class="col-2">
<button id="but" type="button" class="btn btn-primary">Изменить</button>
</div>
<div class="col-9">
<table class="table table-bordered table-hover testTable table-sm">
<thead>
<tr class="bg-info text-white">
<td>Ячейка 1</td>
<td>Ячейка 2</td>
</tr>
</thead>
<tbody>
<tr>
<td>тест</td>
<td></td>
</tr>
<tr>
<td>тест2</td>
<td></td>
</tr>
</tbody>
</table>
</div>
<script>
var tableTd;
$('.testTable').on('click', 'td', function () {
tableTd = $(this).next('td');
});
$('#but').click(function(){
tableTd.html('нужная ячейка');
});
</script>
|
А зачем кнопка?
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<div class="row">
<div class="col-2">
</div>
<div class="col-9">
<table class="table table-bordered table-hover testTable table-sm">
<thead>
<tr class="bg-info text-white">
<td>Ячейка 1</td>
<td>Ячейка 2</td>
</tr>
</thead>
<tbody>
<tr>
<td>тест</td>
<td></td>
</tr>
<tr>
<td>тест2</td>
<td></td>
</tr>
</tbody>
</table>
</div>
<script>
var tableTd;
$('.testTable').on('click', 'td', function () {
$(this).next('td').html('нужная ячейка');
});
</script>
|
:)
<style type="text/css">
td.active + td:after{
content: "нужная ячейка"
}
</style>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<div class="row">
<div class="col-2">
</div>
<div class="col-9">
<table class="table table-bordered table-hover testTable table-sm">
<thead>
<tr class="bg-info text-white">
<td>Ячейка 1</td>
<td>Ячейка 2</td>
</tr>
</thead>
<tbody>
<tr>
<td>тест</td>
<td></td>
</tr>
<tr>
<td>тест2</td>
<td></td>
</tr>
</tbody>
</table>
</div>
<script>
var tableTd;
$('.testTable').on('click', 'td', function () {
$(this).addClass('active');
});
</script>
|
рони,
Обман зрения:) |
Dilettante_Pro,
Кнопка, это клавиатура с iput. Страница на сенсорном экране открывается. Пользователь нажимает на интересующую его строку в таблице, запускается цифровая клавиатура. Он вводит данные и нажимает на кнопку. Вот решал куда передать данные input, передать через переменную tableTd. |
Artur_Hopf, А можно наоборот: ввести данные в input и ткнуть в нужную строку
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<div class="row">
<div class="col-2">
<input type="text" id="buf">
</div>
<div class="col-9">
<table class="table table-bordered table-hover testTable table-sm">
<thead>
<tr class="bg-info text-white">
<td>Ячейка 1</td>
<td>Ячейка 2</td>
</tr>
</thead>
<tbody>
<tr>
<td>тест</td>
<td></td>
</tr>
<tr>
<td>тест2</td>
<td></td>
</tr>
</tbody>
</table>
</div>
<script>
var tableTd;
$('.testTable').on('click', 'td', function () {
$(this).next('td').html($("#buf").val());
});
</script>
|
Dilettante_Pro,
Интуитивно не удобно будет, но спасибо за совет =) |
Artur_Hopf,
Цитата:
|
Не там много вкладок, удобнее клавиатуру вытаскивать после. Выглядят вкладки примерно так:
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
<div class="row">
<div class="col-4">
<div class="list-group" id="list-tab" role="tablist">
<a class="list-group-item list-group-item-action active" id="list-home-list" data-toggle="list" href="#list-home" role="tab" aria-controls="home">Home</a>
<a class="list-group-item list-group-item-action" id="list-profile-list" data-toggle="list" href="#list-profile" role="tab" aria-controls="profile">Profile</a>
<a class="list-group-item list-group-item-action" id="list-messages-list" data-toggle="list" href="#list-messages" role="tab" aria-controls="messages">Messages</a>
<a class="list-group-item list-group-item-action" id="list-settings-list" data-toggle="list" href="#list-settings" role="tab" aria-controls="settings">Settings</a>
</div>
</div>
<div class="col-8">
<div class="tab-content" id="nav-tabContent">
<div class="tab-pane fade show active" id="list-home" role="tabpanel" aria-labelledby="list-home-list">
<table class="table table-bordered table-hover testTable">
<thead>
<tr class="bg-info text-white">
<td>Ячейка 1</td>
<td>Ячейка 2</td>
</tr>
</thead>
<tbody>
<tr>
<td>тест1</td>
<td></td>
</tr>
<tr>
<td>тест1</td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div class="tab-pane fade" id="list-profile" role="tabpanel" aria-labelledby="list-profile-list"><table class="table table-bordered table-hover testTable">
<thead>
<tr class="bg-info text-white">
<td>Ячейка 3</td>
<td>Ячейка 4</td>
</tr>
</thead>
<tbody>
<tr>
<td>тест2</td>
<td></td>
</tr>
<tr>
<td>тест2</td>
<td></td>
</tr>
</tbody>
</table></div>
<div class="tab-pane fade" id="list-messages" role="tabpanel" aria-labelledby="list-messages-list"><table class="table table-bordered table-hover testTable">
<thead>
<tr class="bg-info text-white">
<td>Ячейка 5</td>
<td>Ячейка 6</td>
</tr>
</thead>
<tbody>
<tr>
<td>тест3</td>
<td></td>
</tr>
<tr>
<td>тест3</td>
<td></td>
</tr>
</tbody>
</table></div>
<div class="tab-pane fade" id="list-settings" role="tabpanel" aria-labelledby="list-settings-list"><table class="table table-bordered table-hover testTable">
<thead>
<tr class="bg-info text-white">
<td>Ячейка 7</td>
<td>Ячейка 8</td>
</tr>
</thead>
<tbody>
<tr>
<td>тест5</td>
<td></td>
</tr>
<tr>
<td>тест5</td>
<td></td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
Все это в цикле создается. Там особо некуда input просто так засунуть) |
Или так - одноразовый input
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<div class="row">
<div class="col-2">
</div>
<div class="col-9">
<table class="table table-bordered table-hover testTable table-sm">
<thead>
<tr class="bg-info text-white">
<td>Ячейка 1</td>
<td>Ячейка 2</td>
</tr>
</thead>
<tbody>
<tr>
<td>тест</td>
<td></td>
</tr>
<tr>
<td>тест2</td>
<td></td>
</tr>
</tbody>
</table>
</div>
<script>
var tableTd;
$('.testTable').on('click', 'td', function () {
var that = $(this).next('td');
that.html('<input type="text" >');
that.find('input').on('change', function () {
that.html($(this).val());
});
});
</script>
|
Dilettante_Pro,
Тоже не удобно. Нужно делать три нажатия пальцем, вместо двух =) |
Artur_Hopf,
Цитата:
По вашему варианту: 1. Ткнуть в ячейку таблицы 2. Ткнуть в input. Открывается клавиатура - вводится текст. 3. Ткнуть в button. По моему: 1. Ткнуть в ячейку таблицы 2. Ткнуть в input. Открывается клавиатура - вводится текст. |
Вложений: 2
Dilettante_Pro,
Там клава с пол экрана, с ней удобнее ) |
| Часовой пояс GMT +3, время: 05:12. |