Javascript.RU

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

Перемещение строк таблицы в Firefox
Здравствуйте!
В моей таблице содержаться checkbox-ы, в которых пользователь может ставить галочки и выбирать порядковые номера строчек. Далее при нажатии кнопки происходит сортировка строк таблицы с помощью jQuery. В Opera всё работает, в Firefox - нет. Вся страница исчезает, остаётся один checkbox, и страница "висит".
//Нужно отсортировать строки таблицы согласно seq
//Выбираем все отмеченные checkbox-ы, перемещать будем только эти строки
 var trs = Array();
 var i = 1;
$("input[type='checkbox'][name*='mod_']").each(function() {
   	if ($(this).attr("checked")) {
   	 //Если checkbox с таким индексом отмечен, возможно, придётся изменить порядок
   	 //i - порядковый номер строки в данный момент, (seq-1)
   	 var tr = $("table#modules tr:eq(" + i + ")");
   	 var seq = $("select[name*='seq']:eq(" + (i - 1) + ")").val();
   	if ((i-1) != seq) {
   		trs[seq-1] = tr;
   	}
      }
      i ++;
});

trs.sort();
 for (var seq = 0; seq < trs.length; seq ++) {
	var tr = trs[seq];
       tr.insertBefore($("table#modules tr:eq(" + (seq+1) + ")"));
}

Всё дело в предпоследней строчке. Если я вместо перемещаемого tr ставлю html-код - всё работает. Если выше вместо
var tr = $("table#modules tr:eq(" + i + ")");

я ставлю
var tr = $("table#modules tr:eq(" + i + ") td:eq(1) select");

(просто для примера) - всё работает, селект "переезжает" куда надо. А вот чтобы вся строчка - нет.
Ответить с цитированием
  #2 (permalink)  
Старый 08.02.2009, 03:57
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

приведи код полноценной странички (http://javascript.ru/paste), чтобы можно было скопировать и посмотреть, в чем проблема
Ответить с цитированием
  #3 (permalink)  
Старый 09.02.2009, 17:37
Интересующийся
Отправить личное сообщение для barcelona Посмотреть профиль Найти все сообщения от barcelona
 
Регистрация: 06.02.2009
Сообщений: 23

Всё, я разобрался. Дело было в том, что в строчке стояло
<script></script>
. Убрал - заработало. Конечно, хотелось бы обойти это, но...
Ответить с цитированием
  #4 (permalink)  
Старый 09.02.2009, 18:03
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

[telepat mode]
'<script><'+'/script>'
[/telepat mode]
Ответить с цитированием
  #5 (permalink)  
Старый 10.02.2009, 10:21
Интересующийся
Отправить личное сообщение для barcelona Посмотреть профиль Найти все сообщения от barcelona
 
Регистрация: 06.02.2009
Сообщений: 23

x-yuri, скажите пожалуйста поподробнее, в чём фокус? Я вывожу строки таблицы следующим образом:
<tr>
  <td>
	<input style="width:18%" type="checkbox" name="<?php echo "mod_".$mm->getIdModule() ?>" checked value="1" /><?php echo $mm->getName(); ?>
  </td>
  <td><?php echo '<script>drawModuleSeq('.$countM.')</script>'; ?></td>
  <td><?php echo '<script>drawModulePlace('.$mm->place.')</script>'; ?></td>
</tr>
Ответить с цитированием
  #6 (permalink)  
Старый 10.02.2009, 17:17
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

barcelona, не угадал. Можешь выложить страницу полностью, чтобы можно было самому попробовать? (сюда)
Ответить с цитированием
  #7 (permalink)  
Старый 10.02.2009, 17:47
Интересующийся
Отправить личное сообщение для barcelona Посмотреть профиль Найти все сообщения от barcelona
 
Регистрация: 06.02.2009
Сообщений: 23

x-yuri, я загрузил "Код 49919144", адрес "http://javascript.ru/paste/49919144".
В начале подключается jquery. Этот код рабочий. А вот здесь - "http://javascript.ru/paste/4991962c" нерабочий. Разница - только в наличии тегов "script" во втором столбце каждой строчки. Версия Firefox - 3.0.3

Последний раз редактировалось barcelona, 10.02.2009 в 18:16.
Ответить с цитированием
  #8 (permalink)  
Старый 10.02.2009, 18:51
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

barcelona,
в чем великий смысл делать ссылки не кликабельными? Вас прет выделение-копирование-новая_вкладка-вставка-ентер?
Ответить с цитированием
  #9 (permalink)  
Старый 11.02.2009, 10:39
Интересующийся
Отправить личное сообщение для barcelona Посмотреть профиль Найти все сообщения от barcelona
 
Регистрация: 06.02.2009
Сообщений: 23

Kolyaj, я новичок на форуме. Исправляюсь:
http://javascript.ru/paste/49919144 - рабочий код.
http://javascript.ru/paste/4991962c - нерабочий.
Ответить с цитированием
  #10 (permalink)  
Старый 12.02.2009, 16:29
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

все-таки я был прав, у тебя в скрипте были обнаружены незакрытые тэги (</option>, </select>)
это быть не должно (http://www.w3.org/TR/html401/interac...ml#edef-SCRIPT -> http://www.w3.org/TR/html401/sgml/dtd.html#Script -> http://www.w3.org/TR/html401/types.html#type-cdata):
Цитата:
Although the STYLE and SCRIPT elements use CDATA for their data model, for these elements, CDATA must be handled differently by user agents. Markup and entities must be treated as raw text and passed to the application as is. The first occurrence of the character sequence "</" (end-tag open delimiter) is treated as terminating the end of the element's content. In valid documents, this would be the end tag for the element
соответственно можно писать '</option>' -> '<'+'/option>' или '<\/option>'

p.s. советую пользоваться каким-нибудь валидатором. Например, к firefox есть плагин HtmlValidator, Опера позаволяет отправлять текущую страницу на валидации или http://validator.w3.org/. Ты бы сам тогда смог решить свою проблему ;-)

p.p.s. обычно приемлемо не использовать document.write (т.е. вносить изменения по onload), думаю
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическая подсветка строк таблицы mihha Элементы интерфейса 5 01.02.2009 01:28
Фиксированный заголовок таблицы ilshat Элементы интерфейса 6 20.12.2008 00:35
Перемещение строк в таблицах Pinky Элементы интерфейса 1 26.09.2008 18:03
В Mozilla Firefox 3.0 проблемма с Javascript меню artmedia Элементы интерфейса 1 07.09.2008 10:43
FireFox: onmouseover не работает при зажатой кнопке мыши no. Общие вопросы Javascript 4 19.08.2008 13:43