Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.11.2015, 04:13
Интересующийся
Отправить личное сообщение для newbie guy Посмотреть профиль Найти все сообщения от newbie guy
 
Регистрация: 30.10.2015
Сообщений: 12

Low lvl skill или как переименовать поле.
Есть список.

<ul>
    <li id="1" ondblclick="reName(this.id);">Parent1</li>
    <li id="2" ondblclick="reName(this.id);">Parent2</li>
    <li id="3" ondblclick="reName(this.id);">Parent3</li>
    <li id="4" ondblclick="reName(this.id);">Parent4</li>
    <li id="5" ondblclick="reName(this.id);">Parent5</li>
</ul>


Так же, есть вот такая функция.

function reName (elementId) {
    var id = '#' + elementId;
    var val = $(id).text();
    $(id).empty();
    $(id).append("<input type='text' value='"+val+"' name='"+elementId+"'>");
}


Цель
При двойном клике на элемент списка (<li></li>), появляется текстовое поле, с помощью которого можно изменить текст внутри этого элемента (внутри <li></li>). Текстовое поле должно исчезнуть, после клика за пределами этого поля (за пределами <input />). Ну и соответственно, текст внутри <li></li>, должен измениться на тот, который был введен в текстовом поле.

Проблема
Не могу реализовать функцию для скрытия <input /> и сохранения его значения в <li></li>.

Что я вообще делаю и для чего мне эти функции
В конечном итоге, содержимое внутри <li></li> будет извлекаться из бд. А с помощью ajax, будет происходить переименование/удаление/добавление, и перетаскивание (изменение порядка) полей <li></li>.
Короче будет дерево.

Типичные ответы
Да, я гуглил. Ничего не нашел полезного, может быть не правильно строил поисковые запросы, как знать?!
Нет, библиотеки по типу jstree использовать нельзя. Просто из-за того, что хочется самому понять как реализовать дерево.

Заранее спасибо всем, кто мне ответит.
Ответить с цитированием
  #2 (permalink)  
Старый 11.11.2015, 05:56
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от newbie guy
Не могу реализовать функцию для скрытия <input /> и сохранения его значения в <li></li>.
Если после скрытия сохранение, значит достаточно обработки события onblur элемента, и Гугл по этому вопросу завалит.

Сообщение от newbie guy
А с помощью ajax, будет происходить переименование/удаление/добавление, и перетаскивание (изменение порядка) полей <li></li>.
Короче будет дерево.
С такой структурой списка как у вас, это скорее сортировка пользовательская, но не порождение дерева.
Ответить с цитированием
  #3 (permalink)  
Старый 11.11.2015, 06:07
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от newbie guy Посмотреть сообщение
Короче будет дерево.
У тебя список, причем здесь дерево?
Ответить с цитированием
  #4 (permalink)  
Старый 11.11.2015, 06:13
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сначала надо
Сообщение от newbie guy Посмотреть сообщение
удаление/добавление, и перетаскивание
А потом уже
Сообщение от newbie guy Посмотреть сообщение
переименование
Ответить с цитированием
  #5 (permalink)  
Старый 11.11.2015, 09:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

newbie guy,
готовое решение
вам только изменить селектор в строке 25
редактирование таблицы
Ответить с цитированием
  #6 (permalink)  
Старый 11.11.2015, 14:30
Интересующийся
Отправить личное сообщение для newbie guy Посмотреть профиль Найти все сообщения от newbie guy
 
Регистрация: 30.10.2015
Сообщений: 12

Я знаю, что это список.
Но за подсказку спасибо.

рони,
Спасибо, помогло. Вроде бы.

В итоге нарисовал вот такое. Лично меня устраивает.

function reName (elementId) {
    var id = '#' + elementId;
    var val = $(id).text();
    $(id).html("<input type='text' value='"+val+"' id='"+elementId+"sp' >");
    $(id+'sp').focus().val(val);
    $(id+'sp').blur(function() {
        $(id).html($(id+'sp').val());
    });
    $(id+'sp').keyup(function(event) {
        if(event.keyCode==13) { $(id).html($(id+'sp').val()); }
    });
}


<ul>
    <li id="1" ondblclick="reName(this.id);">Parent1</li>
    <li id="2" ondblclick="reName(this.id);">Parent2</li>
    <li id="3" ondblclick="reName(this.id);">Parent3</li>
    <li id="4" ondblclick="reName(this.id);">Parent4</li>
    <li id="5" ondblclick="reName(this.id);">Parent5</li>
</ul>
Ответить с цитированием
  #7 (permalink)  
Старый 11.11.2015, 14:45
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

newbie guy,
<form class="ul">
    <input class="li" name="1" value="Parent1">
    <input class="li" name="2" value="Parent2">
    <input class="li" name="3" value="Parent3">
    <input class="li" name="4" value="Parent4">
    <input class="li" name="5" value="Parent5">
</form>
Ответить с цитированием
  #8 (permalink)  
Старый 11.11.2015, 15:00
Интересующийся
Отправить личное сообщение для newbie guy Посмотреть профиль Найти все сообщения от newbie guy
 
Регистрация: 30.10.2015
Сообщений: 12

Rise,
Тоже вариант.

В общем, чего парить вам мозг своей бестолковостью.

Когда реализую то что я хочу, предоставлю в этой теме, а может и в другой.

Уверен мой "говно код" все оценят

Последний раз редактировалось newbie guy, 11.11.2015 в 15:04.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить пользователь сам нажал элемент или при помощи функции click(); finlandia Элементы интерфейса 13 10.01.2013 23:09
Как отследить пропал ли текст placeholder-а при фокусе на поле ввода z1987 Общие вопросы Javascript 2 19.12.2012 11:10
Восторг в античной ForYourself ювелирные изделия тибетской или дать как подарок whistle123 Events/DOM/Window 0 03.12.2012 10:09
Как узнать, float или int значение присвоено переменной? gadyuka Общие вопросы Javascript 4 30.10.2012 15:31
Как переименовать свойство объекта? Маэстро Events/DOM/Window 28 25.10.2012 17:02