Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как реализовать Drag&Drop внутри таблицы?? 
:(
    Опции темы
InfMag
Дата 22.11.2007, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 2
Всего: 4



У меня есть таблица, которая будет все время выравниваться по центру, у меня есть <img> внутри <td> тега и мне нужно реализовать чтобы хватать и таскать этот <img> внутри <td>. Кто-нибудь может мне объяснить как это реализовать??
PM   Вверх
dsCode
Дата 22.11.2007, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: 19
Всего: 26



InfMag,

1. onmousedown на img - start drag
2. onmousemove - dragging
3. onmouseup на td - end drag, привязка img к td


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
InfMag
Дата 22.11.2007, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 2
Всего: 4



dsCode, а как это реализовать кодом?
PM   Вверх
InfMag
Дата 22.11.2007, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 2
Всего: 4



Как хотябы получить координаты мыши внутри таблицы?
PM   Вверх
dstorm81
Дата 23.11.2007, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


бездельник
***


Профиль
Группа: Завсегдатай
Сообщений: 1178
Регистрация: 18.1.2006
Где: (16RU)

Репутация: 20
Всего: 39



http://www.walterzorn.com/dragdrop/dragdrop_e.htm - тут реализация ползунка
http://tool-man.org/examples/sorting.html - тут тоже умно и красиво



--------------------
на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#)

PM   Вверх
dsCode
Дата 23.11.2007, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: 19
Всего: 26



InfMag, координаты мыши абсолютны и не зависят от таблицы. Эмм... вернее, не абсолютны, все же отностительны, но - с учетом скролинга их надо брать. Вообще: это либо e.pageX (e.pageY), либо e.clientX (e.clientY) - в зависимости от браузера. Плюс к этому нужно учесть скроллинг - либо document.body.scrollLeft - горизотальный, document.body.scrollTop - вертикальный, либо document.documentElement.scrollTop (document.documentElement.scrollLeft) если стриктМод используется.

dstorm81, тоже первую ссылку хотел дать =)

Это сообщение отредактировал(а) dsCode - 23.11.2007, 14:19


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
InfMag
Дата 26.11.2007, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 2
Всего: 4



Дык у меня таблица, которая по центру выравнивается и она постоянно будет по разным координатам находиться. Получается не вариант такое провернуть? Нужно таблицу к краям прибивать полюбому?
PM   Вверх
InfMag
Дата 28.11.2007, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 2
Всего: 4



dsCode, Что за стриктМод ??
PM   Вверх
InfMag
Дата 28.11.2007, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 2
Всего: 4



Цитата(dsCode)
InfMag, координаты мыши абсолютны и не зависят от таблицы. Эмм... вернее, не абсолютны, все же отностительны, но - с учетом скролинга их надо брать. Вообще: это либо e.pageX (e.pageY), либо e.clientX (e.clientY) - в зависимости от браузера. Плюс к этому нужно учесть скроллинг - либо document.body.scrollLeft - горизотальный, document.body.scrollTop - вертикальный, либо document.documentElement.scrollTop (document.documentElement.scrollLeft) если стриктМод используется.

А какие значения к каким браузерам относятся??

Это сообщение отредактировал(а) InfMag - 28.11.2007, 12:31
PM   Вверх
InfMag
Дата 28.11.2007, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 2
Всего: 4



dsCode, блин, странно... Вывожу скроллинг: document.body.scrollLeft и document.body.scrollTop - все нормально выводится, но координаты мыши никак не хочет отдавать. Я и e.pageX (e.pageY) и e.clientX (e.clientY) пробовал - не выводит - пишет ошибка на странице... Что это может быть??
PM   Вверх
InfMag
Дата 28.11.2007, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 2
Всего: 4



Нашел выход: event.clientX и event.clientY
PM   Вверх
dsCode
Дата 28.11.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: 19
Всего: 26



InfMag, 
Цитата(InfMag @  28.11.2007,  12:29 Найти цитируемый пост)
А какие значения к каким браузерам относятся??

ну поэкспериментируйте, я на вскидку сказал, не помню (проверять - влом, щас времени нет ;)) - что-то для Оперы (pageX [Y], если мне не изменяет память), что-то для IE и FF (clientX [Y]). Поставьте if'ы - посмотрите. 

Цитата(InfMag @  28.11.2007,  12:49 Найти цитируемый пост)
Я и e.pageX (e.pageY) и e.clientX (e.clientY) пробовал - не выводит - пишет ошибка на странице... Что это может быть??

Цитата(InfMag @  28.11.2007,  13:32 Найти цитируемый пост)
Нашел выход: event.clientX и event.clientY

ну естественно. Я думал, вы цепляете события, примерно так:

obj.onsomeevent = function(e) {
  e = e || window.event;
  ...
}


Конечно же, event надо использовать, а не неопределенное e.

Цитата(InfMag @  28.11.2007,  10:14 Найти цитируемый пост)
Что за стриктМод ??

Строгий режим документа, где, например, присутствует DOCTYPE.

Цитата(InfMag @  26.11.2007,  16:39 Найти цитируемый пост)
Дык у меня таблица, которая по центру выравнивается и она постоянно будет по разным координатам находиться. Получается не вариант такое провернуть? Нужно таблицу к краям прибивать полюбому? 

все вариант. Можно вообще без координат ячеек таблицы обойтись. Координаты Вам нужны только для драг&дропа, когда вы тащите объект. Сделайте небольшое смещение курсора (чтобы он слегка выходил за пределы изображения, которое перетаскивается) - таким образом onMouseUp произойдет на ячейки таблицы, а там Вы его (маусАп) и обработаете, т.е. привяжете изображение к ячейке.

someTd.onmouseup = function(e) {
  e = e || window.event;
  this.привязатьОбъект(изображение_которое_перетаскивалось);
  ...
}



Это сообщение отредактировал(а) dsCode - 28.11.2007, 13:58


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
InfMag
Дата 28.11.2007, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 2
Всего: 4



Остался вопрос, есть проблема когда я таскаю картинку в интернет эксплорере, я еще тащу пару пикселей и она тащится нормально, если дальше, то интернет эксплорер меняет мой курсор на курсор запрета и дальше не тащит. Как с ним бороться?
PM   Вверх
dsCode
Дата 28.11.2007, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: 19
Всего: 26



InfMag, потому что маус уезжает за пределы изображения (а для document'a маусМув не указан). Попробуйте привязать тот же код (и соответственно, удалить, когда произойдет drop) на document.


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
ksnk
Дата 28.11.2007, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Нужно в функции таскания отменять дальнейшее событие
Код

    function clear(e) {
     if (e.preventDefault) e.preventDefault()
     e.returnValue = false;
        return false;
    }
...
    var mousemove_func=function(e) {
         if (this.m_item) {this.m_item.pos.x=e.clientX;this.m_item.pos.y=e.clientY}
         return clear(e)
    }
...


Это сообщение отредактировал(а) ksnk - 28.11.2007, 17:19


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0544 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.