Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.01.2019, 22:38
Профессор
Отправить личное сообщение для savsoft Посмотреть профиль Найти все сообщения от savsoft
 
Регистрация: 03.01.2019
Сообщений: 162

Доступ к ячейке таблицы по кнопке.
Сильно не пинайте, я делаю первые шаги в javascript.

На php я формирую таблицу с несколькими полями. Одно из полей необходимо менять не перезагружая страницу. Если просто отдельное значение, то я могу это сделать через ajax-запрос. А вот в случае с таблицей не знаю как подступиться. На php я даю имя поля-массив с индексом уникальный код, а как быть в случае с javascript? Использовать массив или давать полю id="idN", где N уникальный код, а кнопке давать id="bidN"? Если так, то как определить нажатую кнопку и соответствующее ей поле?

Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 04.01.2019, 00:40
Профессор
Отправить личное сообщение для savsoft Посмотреть профиль Найти все сообщения от savsoft
 
Регистрация: 03.01.2019
Сообщений: 162

Сообщение от Rise Посмотреть сообщение
Надо смотреть разметку таблицы, что где находится, где кнопки и их значения, если они в одной строке, то можно и без идентификатора обойтись, только индексом ячейки.
Таблицу я сам формирую на php, но в зависимости от условий, заданных пользователем, сортировка и содержимое разные. В каждой строке есть колонка с уникальным кодом, несколько колонок с инфой, колонка с полем textarea и рядом колонка с кнопкой "Сохранить".

Вопрос как мне вывести колонку с полем textarea и кнопку, чтобы легко и просто идентифицировать, какая кнопка была нажата, а точнее прочитать содержимое поля textarea и уникальный код строки?

Последний раз редактировалось savsoft, 04.01.2019 в 00:47.
Ответить с цитированием
  #3 (permalink)  
Старый 04.01.2019, 02:38
Профессор
Отправить личное сообщение для savsoft Посмотреть профиль Найти все сообщения от savsoft
 
Регистрация: 03.01.2019
Сообщений: 162

Сообщение от Rise Посмотреть сообщение
$('td button').on('click', function (e) {
    var $button = $(this),
        buttonId = $button.attr('id');
    var $tr = $button.closest('tr'),
        trId = $tr.attr('id');
    var $textarea = $tr.find('textarea'),
        textareaValue = $textarea.val();
});
А как должна выглядеть строка таблицы?

У меня сейчас строка для записи с уникальным кодом 16 выглядит так

Код:
<tr id="16">
<td>Awesome</td>
<td>S</td>
<td>31-01-2019</td>
<td><a class="btn btn-primary" href="ht.php?id=107&type=1">HT</a></td>
<td><textarea id="t16" rows="3" cols="64"></textarea></td>
<td><button id="b16"><img src="images/save.png"></button></td>
</tr>
Ответить с цитированием
  #4 (permalink)  
Старый 04.01.2019, 11:38
Профессор
Отправить личное сообщение для savsoft Посмотреть профиль Найти все сообщения от savsoft
 
Регистрация: 03.01.2019
Сообщений: 162

В конце концов сделал так и частично заработало

<script>
		$(document).ready(function(){

			// code to read selected table row cell data (values).
			$("#myTable").on('click','.btnSelect',function(){
				 // get the current row
				 var currentRow=$(this).closest("tr"); 
				 
				 //var col1=currentRow.find("td:eq(0)").text(); // get current row 1st TD value
				 var colT=currentRow.find("td:eq(7)").text(); // get current row 3rd TD
				 alert(colT);
			});
		});	
</script>


Этот скрипт выдает значение, которое было при формировании таблицы, а мне нужно введенное или измененное значение. Подскажите, куда копать?
Ответить с цитированием
  #5 (permalink)  
Старый 04.01.2019, 14:28
Профессор
Отправить личное сообщение для savsoft Посмотреть профиль Найти все сообщения от savsoft
 
Регистрация: 03.01.2019
Сообщений: 162

Сообщение от Rise Посмотреть сообщение
Какое видите значение в восьмой ячейке такое и получаете, других значений там нет.
Разобрался, если я использую .text(), то вижу значение на момент создания таблицы, или пустое или значение, а чтобы увидеть новое введенное или измененное значение нужен .val().

А можно как-то прочитать id, например 5 ячейки текущей строки?

Последний раз редактировалось savsoft, 04.01.2019 в 14:30.
Ответить с цитированием
  #6 (permalink)  
Старый 04.01.2019, 15:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от savsoft
А можно как-то прочитать id, например 5 ячейки текущей строки?

а подумать?
currentRow.find("td:eq(4)").attr('id');
Ответить с цитированием
  #7 (permalink)  
Старый 04.01.2019, 16:11
Профессор
Отправить личное сообщение для savsoft Посмотреть профиль Найти все сообщения от savsoft
 
Регистрация: 03.01.2019
Сообщений: 162

Сообщение от рони Посмотреть сообщение

а подумать?
currentRow.find("td:eq(4)").attr('id');
Спасибо.

Я пока просто вывел колонку с Уникальным кодом и
style="display: none;"
. Пользователю не мешает, я могу прочитать уникальный код выбранной строки. Или в этом случае есть подводные камни?
Ответить с цитированием
  #8 (permalink)  
Старый 05.01.2019, 00:09
Профессор
Отправить личное сообщение для savsoft Посмотреть профиль Найти все сообщения от savsoft
 
Регистрация: 03.01.2019
Сообщений: 162

Частично разобрался. Получается что .text() хранит значение, которое было при выводе страницы, пока страницу не перезагрузить или значение можно явно изменить. А .val() хранит новое значение, введенное пользователем и при изменении .val(), .text() остается старым. В общем задачу ввода комментариев без перезагрузки страницы решил, раскраску строк таблицы тоже. Буду дальше постепенно разбираться с javascript.

Всем спасибо!
Ответить с цитированием
  #9 (permalink)  
Старый 05.01.2019, 00:26
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

.text() - это jq метод, он не хранит ничего,... если не получает аргументов, то служит для получения родного свойства textContent .val() аналогично только для свойства value.

свойство textContent перезаписать value может у элемента textarea. но не наоборот. у элементов input такое не прокатит
Ответить с цитированием
  #10 (permalink)  
Старый 05.01.2019, 00:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109


Цитата:
.val()

Метод позволяет получать и изменять значения элементов форм. Для элементов input это значение атрибута value; для списков выбора (select) – значение value выбранного элемента (в случае множественного выбора – массив значений); в случае с textarea, метод .val() будет работать непосредственно с содержимым тега textarea

Цитата:
text()

Возвращает или изменяет текстовое содержимое выбранных элементов страницы
val для value

text для textContent
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
typeof возвращает значение undefied у строки,которая содержится в ячейке таблицы Misterdark Events/DOM/Window 8 16.04.2016 08:03
Текст в ячейке таблицы Sergey410 Events/DOM/Window 5 15.12.2013 17:08
OnClick ячейки таблицы и ссылки в этой ячейке MasDen Javascript под браузер 2 30.06.2011 10:34
Доступ к ячейке DenQ jQuery 1 02.02.2011 09:01
Не могу получить доступ к ячейке таблицы Andrey2005 Элементы интерфейса 4 15.06.2009 00:34