Javascript.RU

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

AJAX + Firefox некорректное отображение checkbox
Приветствую всех!

В процессе написания кода для создания дерева (каталог) столкнулся с проблемой некорректного отображения статуса чекбокса.

Предистория:
Раскрывающаяся ветка для дерева создается с помощью скрипта на jQuery (с использованием AJAX) (все ОК, работает в: ie, opera, firefox, Chrome)

название дерева
- категория 1
--подкатегория 1
--подкатегория 2
- категория 2
- категория 3

действия:
1. при загрузке страницы отображается первый уровень (категория 1, 2, 3)
2. пользователь раскрывает категорию
3. в появившейся подкатегории выделяет "подкатегория 1"
4. в базе данных сохраняется статус "подкатегории 1" (javascript по клику на чекбоксе)
5. пользователь обновляет страницу (F5)
6. на странице отображается дерево без подкатегорий (аля шаг 1)
7. firefox отображает выделенным элемент (категория 2)

т.е. firefox тикает при обновлении "второй" элемент дерева на странице,
соответственно, если в начале выделить "подкатегорию 2", то после обновления он выделит "категорию 3" (третий чекбокс на странице)

В ie, opera chrome все работает корректно, после обновления страницы некорректные элементы не выделяются

PS: при просмотре кода через firebug, некорректно выделенный чекбокс не имеет флага checked
PSS: если обновлять ctrl+F5 - все отображается корректно, поэтому подозреваю что проблема в кукис либо кэше файрфокса

jquery код создания ветки:
function getSubTree(){
  $('img.tree_plus').live("click", function(){
    var id = $(this).next().attr('value');
    var $res = $(this).parent().parent();
    var path = document.location.pathname;
    var img = $(this).attr('src');
    if (path.indexOf('userpage')>0){
        var page = 'admin';
        var inputtype = 'checkbox';
    } else if (path.indexOf('personal')>0){
        var page = 'personal';
        var inputtype = 'checkbox';
    } else {
        var inputtype = 'radio';
        var page = 'index';
    }
    if (img.indexOf('plus')>0){
        img = img.replace('plus', 'minus');
        $(this).attr('src', img);
        $res.after('<div></div>');
        $.ajax({type: "POST", url: "/admin/get_subtree", data: {id:id, page:page, inputtype:inputtype}, dataType: "text", success: function(msg){
                $res.next().html(msg);
        }});
    } else{
        img = img.replace('minus', 'plus');
        $(this).attr('src', img);
        $res.next().remove()
    };
  });
};


Заранее спасибо всем кто откликнется
Александр
Ответить с цитированием
  #2 (permalink)  
Старый 06.04.2011, 02:14
Новичок на форуме
Отправить личное сообщение для all87 Посмотреть профиль Найти все сообщения от all87
 
Регистрация: 06.04.2011
Сообщений: 1

попробуй autocomplete="off"
Ответить с цитированием
  #3 (permalink)  
Старый 26.06.2015, 14:23
Новичок на форуме
Отправить личное сообщение для supermike Посмотреть профиль Найти все сообщения от supermike
 
Регистрация: 22.06.2013
Сообщений: 7

all87, спаисбо за подсказку. Ваш совет помог побороть FF, который select'ы запоминает сам и выделяет их по своему усмотрению, а ajax естественно думает что выделен первый.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Некорректное отображение ссылок и бэкграундов в пунктах меню Lex4e Общие вопросы Javascript 4 13.02.2010 04:06
Различное отображение текста в IE7 и Mozilla Firefox alinka Javascript под браузер 5 02.09.2009 22:03
jQuery 1.2.6 Ajax: траблы в FireFox и Opera Russell jQuery 5 28.05.2009 22:22