Javascript.RU

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

как сохранить данные на кнопке Ок
Здравствуйте, Форумчане!

есть задача - таблица с ячейками. при нажатии на ячейку происходит отображение ее содержимого для редактирования. при нажатии на кнопку Ок должны сохраняться отредактированные данные, при нажатии на Cancel - отменяться. это задача из учебника Кантора, но хочется самостоятельно написать.

Не получилось с кнопкой Ок. Не редактируются данные, не сохраняются, блок textarea c кнопками улетает в угол документа и висит там до обновления страницы.

код вот здесь https://jsfiddle.net/5yuvk3ku/ , чтобы не удлинять топик. код не причесан - все в одном. оптимизация будет, когда функционально решу задачу.

Пробовала удалять textarea при нажатии на кнопку Ок, не получается, потому что она определяется undefined, когда нажимаю на кнопку Ок. Пробовала сохранить td и textarea в переменную и потом с ней поработать по нажатию на кнопку Ок, - не получилось.

Понимаю, что нужно убрать класс активной ячейки, сохранить то, что в textarea в содержимое ячейки и удалить textarea. но закодить это не получается.

заранее большое спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 05.12.2016, 08:30
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Сообщение от kvitochka13
это задача из учебника Кантора, но хочется самостоятельно написать.
...
но закодить это не получается
Тогда где эта самая самостоятельность?
Ответить с цитированием
  #3 (permalink)  
Старый 05.12.2016, 13:55
Новичок на форуме
Отправить личное сообщение для kvitochka13 Посмотреть профиль Найти все сообщения от kvitochka13
 
Регистрация: 03.12.2016
Сообщений: 4

Спасибо за ваш комментарий

ну я имела в виду, самостоятельно от Кантора и без списываний подумала, одна голова хороша, а две лучше, и, может, на форуме кто-то что-то подскажет) не сделает за меня, а подскажет, где может быть ошибка и почему может не получаться

если нет, то тогда буду продолжать заполнять пробелы в знаниях и учиться, учиться, учиться....
Ответить с цитированием
  #4 (permalink)  
Старый 05.12.2016, 14:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А какова конечная цель данной задачи? Ведь если отредактировать и сохранить, то поле редактирования будет элементом формы, а если редактировать и отобразить результат опять в таблице, без сохранения, то поле будет временным элементом.
Ответить с цитированием
  #5 (permalink)  
Старый 05.12.2016, 14:09
Новичок на форуме
Отправить личное сообщение для kvitochka13 Посмотреть профиль Найти все сообщения от kvitochka13
 
Регистрация: 03.12.2016
Сообщений: 4

Сообщение от laimas Посмотреть сообщение
А какова конечная цель данной задачи? Ведь если отредактировать и сохранить, то поле редактирования будет элементом формы, а если редактировать и отобразить результат опять в таблице, без сохранения, то поле будет временным элементом.
цель - редактирование ячейки таблицы с дальнейшим сохранением изменений или отменой по нажатию соответствующих кнопок.

я пыталась сделать, чтобы textarea был у меня временным. собственно, не думаю, что он должен оставаться, т. к. по окончанию редактирования или отмены должны вернуться исходные настройки ячейки и этот блок редактирования уже не нужен. но моих соображений на данный момент не хватает, чтобы закончить задачу((
Ответить с цитированием
  #6 (permalink)  
Старый 05.12.2016, 14:42
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

kvitochka13, можно просто свойство contentEditable переключать вместо использования textarea.
Ответить с цитированием
  #7 (permalink)  
Старый 05.12.2016, 14:58
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от kvitochka13
цель - редактирование ячейки таблицы с дальнейшим сохранением изменений или отменой по нажатию соответствующих кнопок.
Сохранение изменений в контексте веб, это для всех, то есть отредактировали и сохранили изменения на сервере. А это означает, что элемент редактирования должен быть до тех пор, пока изменения не будут отправлены на сервер. Сервер сохранил в базе изменения, все, задача решена.

Но если отмена изменений, то тут опять таки два варианта: а) отмена (отказ от редактирования), это отмена изменений (вернее не принятие таковых) во время редактирования; б) отмена изменений уже после сохранения на сервере, в этом случае сервер должен хранить и данные, которые были до последней редакции, чтобы можно было произвести откат назад.

Если же запомнить для себя, то это можно организовать и в локальном хранилище. А если запомнить, это отобразить введенный текст в ячейке таблицы, то это не запоминание, а так - "ляпота получилась", и забыли об этом.

То есть, подстричься, это общая задача, а как, укладка, духи или без, это уже детали, но очень важны для результата. )

Ставьте задачу от общего к частному, иначе ее никто не решит, а не только вы.)
Ответить с цитированием
  #8 (permalink)  
Старый 05.12.2016, 15:52
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

kvitochka13,
if (target.className == 'ok') {
            target.parentElement.classList.remove('active');
            target.parentElement.innerHTML = target.parentElement.querySelector('textarea').value;
            if (selectedTd.split(' ')[1] == 'active') { selectedTd = selectedTd.split(' ')[0]; }
        }
Ответить с цитированием
  #9 (permalink)  
Старый 06.12.2016, 12:06
Новичок на форуме
Отправить личное сообщение для kvitochka13 Посмотреть профиль Найти все сообщения от kvitochka13
 
Регистрация: 03.12.2016
Сообщений: 4

Огромное спасибо всем за комментарии, подсказки, советы

Сообщение от Rise Посмотреть сообщение
kvitochka13, можно просто свойство contentEditable переключать вместо использования textarea.
Спасибо! очень полезная информация!

laimas, большое спасибо за взгляд с другой стороны и масштаб решения каждой задачи. действительно, надо смотреть шире и глобальнее. а я при решении этой задачи об этом даже не подумала((

Сообщение от Dilettante_Pro Посмотреть сообщение
kvitochka13,
if (target.className == 'ok') {
            target.parentElement.classList.remove('active');
            target.parentElement.innerHTML = target.parentElement.querySelector('textarea').value;
            if (selectedTd.split(' ')[1] == 'active') { selectedTd = selectedTd.split(' ')[0]; }
        }
Dilettante_Pro, огромное спасибо! я пыталась сделать похожий вариант. только я пыталась обратиться напрямую к textarea или через переменную ((( хотя очень была близка к вашему решению.

и пока что мне не совсем понятно, почему мне нужно сначала снять класс "active" с ячейки, а потом производить сохранение редактирования. если наоборот, то вываливается ошибка. мне казалось, что главное, чтобы по нажатию кнопки сразу сохранять отредактированные данные, а потом уже можно писать другие операторы без строгой их последовательности, лишь бы выполнились по нажатию на кнопку Ок. поправьте меня, пожалуйста.

и тогда получается, что удалять (например, через remove()) поле textarea мне нужно? а тогда куда оно девается? ведь я каждый раз по клику на ячейку создаю новый элемент textarea.
Ответить с цитированием
  #10 (permalink)  
Старый 06.12.2016, 12:50
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от kvitochka13
масштаб решения каждой задачи
Тут не столько масштаб, сколь конечная цель. Не может возникать такого вопроса "что удалять (например, через remove()) поле textarea мне нужно?", если есть ответ на вопрос - что значит сохранение.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как с помощью javascript взять данные из одного файла html и закинуть в другой? rusik Общие вопросы Javascript 10 08.08.2016 12:11
Как сохранить данные в файл? Возможно такое на JavaScript? Forgott Общие вопросы Javascript 35 26.06.2015 19:11
Как передать данные в другую панель из выбранной строки таблицы. layout: 'card'. Пролетарий ExtJS 5 03.06.2015 22:53
Как добавить данные в глобальный массив из функции Jigan2 jQuery 2 14.03.2015 18:06
Контекстное меню как считать данные из таблицы xela1980 jQuery 25 31.05.2013 14:20