Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2014, 08:22   #1
three_cats
Форумчанин
 
Аватар для three_cats
 
Регистрация: 27.09.2012
Сообщений: 175
Смущение JQuery редактирование поля

Возникла проблема при редактировании текущего поля. Смысл такой. При нажатии на кнопку "e" должно редактироваться то поле, напротив которого стоит кнопка. На практике это не всегда происходит, потому что значение fh получается путем присвоения ему значения атрибута rel при фокусировке на поле ввода. Что можно придумать?

Код:
<!DOCTYPE html>
<html>

<head>
    <script type="text/javascript" src="jquery-1.10.2.js"></script>
    <script>
        var ch = -1;
        var fh = 0;

        $(document).ready(function () {
            f0();

            $("div#main").on("focus", "input", function () {
                fh = $(this).attr("rel");
            });

            $("div#main").on("blur", "input", function () {
                f1();
            });

            $("div#main").on("click", ".e1", function () {
                e();
            });

            $("div#main").on("click", ".b1", function () {
                f0();
            });

        });

        function e() {
            var tmp = $("span.s_" + fh).text();
            $("span.s_" + fh).empty();
            $("span.s_" + fh).append("<input value='" + tmp + "' rel='" + fh + "' type='text' class='i_" + fh + "' />");
        }

        function f1() {
            var tmp = $(".i_" + fh).val();
            $("span.s_" + fh).empty();
            $("span.s_" + fh).append(tmp);
        }

        function f0() {
            ch++;
            $("div#main").append("<div class='w_" + ch + "'></div>");
            $("div.w_" + ch).append("<span class='s_" + ch + "'></span>");
            $("div.w_" + ch).append("<span class='bs_" + ch + "'></span>");
            $("span.s_" + ch).append("<input rel='" + ch + "' type='text' class='i_" + ch + "' />");
            $("span.bs_" + ch).append("<button class='b1'>+</button>");
            $("span.bs_" + ch).append("<button class='e1'>e</button>");
        }
    </script>
</head>

<body>
    <div id="main"></div>
</body>

</html>
Никто

мой блог
three_cats вне форума Ответить с цитированием
Старый 01.02.2014, 10:53   #2
DpolenST
Форумчанин
 
Регистрация: 28.09.2013
Сообщений: 115
По умолчанию

Код:
  
            $("div#main").on("click", ".e1", function () {
                fh = $(this).index(".e1");
                e();
            });
Что бы еще такого сделать, чтобы ничего не делать?
DpolenST вне форума Ответить с цитированием
Старый 01.02.2014, 12:35   #3
three_cats
Форумчанин
 
Аватар для three_cats
 
Регистрация: 27.09.2012
Сообщений: 175
Хорошо

DpolenST, просто нереальное спасибо!
Никто

мой блог
three_cats вне форума Ответить с цитированием
Старый 01.02.2014, 12:52   #4
three_cats
Форумчанин
 
Аватар для three_cats
 
Регистрация: 27.09.2012
Сообщений: 175
Счастье

А вот я еще добавляю функцию:

Код:
            $("div#main").on("click", ".m1", function() {
				fh = $(this).index(".m1");
				m1();
			});
И в HTML:

Код:
            $("span.bs_" + ch).append("<button class='m1'>-</button>");
Почему-то несколько раз удаляет, но в итоге остаются "неудаляемые" поля. Из-за чего это? Что можно придумать?
Никто

мой блог
three_cats вне форума Ответить с цитированием
Старый 01.02.2014, 14:50   #5
DpolenST
Форумчанин
 
Регистрация: 28.09.2013
Сообщений: 115
По умолчанию

Цитата:
Сообщение от three_cats Посмотреть сообщение
А вот я еще добавляю функцию:

Код:
            $("div#main").on("click", ".m1", function() {
				fh = $(this).index(".m1");
				m1();
			});
И в HTML:

Код:
            $("span.bs_" + ch).append("<button class='m1'>-</button>");
Почему-то несколько раз удаляет, но в итоге остаются "неудаляемые" поля. Из-за чего это? Что можно придумать?
к сожалению я не телепат, нужен код функции m1().
Что бы еще такого сделать, чтобы ничего не делать?
DpolenST вне форума Ответить с цитированием
Старый 02.02.2014, 06:37   #6
three_cats
Форумчанин
 
Аватар для three_cats
 
Регистрация: 27.09.2012
Сообщений: 175
Радость

Оу, прошу прощения! Вот

Код:
        function m1() {
			$("div.w_" + fh).empty();
		}
Никто

мой блог
three_cats вне форума Ответить с цитированием
Старый 02.02.2014, 09:50   #7
DpolenST
Форумчанин
 
Регистрация: 28.09.2013
Сообщений: 115
По умолчанию

Понятно, после полного удаления элементов в слое, такая запись $(this).index(".m1"); становится бесполезна. Если вы удаляете кнопку из центра списка, то индексы следующих за ней кнопок уменьшаются.

Можете вообще отказаться от обращения к полям по их номерам, например как-то так:
Код:
         $(document).ready(function () {
            f0();

            $("div#main").on("blur", "input", function () {
                f1($(this).parent());
            });

            $("div#main").on("click", ".e1", function () {
		e($(this).parent().parent().children().eq(0));
            });

            $("div#main").on("click", ".b1", function () {
                f0();
            });
			
            $("div#main").on("click", ".m1", function () {
                $(this).parent().parent().remove();
            });
			

        });

        function e(spn) {
            var tmp = spn.text();
            spn.empty();
            spn.append("<input value='" + tmp + "' type='text' />");
        }

        function f1(spn) {
            var tmp = spn.children().eq(0).val();
            spn.empty();
            spn.append(tmp);
        }

        function f0() {
            ch++;
            $("div#main").append("<div class='w_" + ch + "'></div>");
            $("div.w_" + ch).append("<span class='s_" + ch + "'></span>");
            $("div.w_" + ch).append("<span class='bs_" + ch + "'></span>");
            $("span.s_" + ch).append("<input type='text' />");
            $("span.bs_" + ch).append("<button class='b1'>+</button>");
            $("span.bs_" + ch).append("<button class='e1'>e</button>");
            $("span.bs_" + ch).append("<button class='m1'>-</button>");
        }
Что бы еще такого сделать, чтобы ничего не делать?

Последний раз редактировалось DpolenST; 02.02.2014 в 09:57.
DpolenST вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Редактирование поля в DBGrid. Ol'K@ БД в Delphi 8 03.02.2013 15:18
jquery sortable panels редактирование фотоальбома Kostia JavaScript, Ajax 1 30.11.2012 12:24
редактирование поля Boolean Dimka_89 БД в Delphi 8 20.10.2010 12:01
Измененние цвета фона поля (поля со списком) при редактировании TimRus Microsoft Office Access 2 17.05.2010 21:56
Выявление одинаковости значений поля в одной талице по значению поля в другой nikmay SQL, базы данных 4 13.08.2009 12:51