Как объяснить кнопке расположение ячейки 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, время: 08:02. |