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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Самоплодящийся <option> 
:(
    Опции темы
Jops
Дата 14.2.2013, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 31.1.2013

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



Здравствуйте уважаемые!

Я к вам с довольно таки нубским вопросом, но ни как не решаемым моими силами.
Есть функция, формирующая из данных базы <option> и вставляющая ИХ в <select>.
Сам <select> находится в диалогом окне. При запуске диалогового окна, запускается эта функция и формирует <option>.
Диалоговое окно создано для создания и редактирования определённого ОБЪЕКТА, то есть окно не закрывается после действия с ним, но обновляется страница (что бы отобразить изменения). И тут наступает проблема: Диалоговое окно вновь запускает эту функцию и наполняется очередной порцией абсолютно таких же <option> (то есть было три, а стало шесть, по два одинаковых).

Помогите оградиться от самооплодотворения <option> или наведите на мысль.
Заранее благодарю всех тех, кто откликнется!





Код

function select_group() {
    var vr_url = cam_control+"/cgi-bin/admin.pl?m=selectgroup";
    return $.ajax({
    type: 'GET',
    dataType: 'json',
    cache: false,
    url: vr_url,
    success: function(data){
            if(data.error != undefined) {
                if(undefined != err_lang[data.error]) {
                    alert('Ошибка: '+err_lang[data.error]);
                }else{
                    alert('Возникла неизвестная ошибка, попробуйте позже. ('+data.error+')');
                }
            } else {                   
    for(var selgr in data)
            {$("#selusers")
    .append('<option value="' + data[selgr].user_id + '">' + data[selgr].user_login + '</option>');}  
            }
        }
    });
}

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


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


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

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



Код

for(var selgr in data)
{
  if($("#selusers option[value="+data[selgr].user_id+"]").length()>1)

    $("#selusers")
      .append('<option value="' + data[selgr].user_id + '">' + data[selgr].user_login + '</option>');
}  
 

В качестве грязного рабочего решения - можно сначала проверить есть оно или нет

А можно просто очистить все сначала.
Код

$("#selusers option").remove();



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Jops
Дата 14.2.2013, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 31.1.2013

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



Спасибо большое! Попробую
PM MAIL   Вверх
Aliance
Дата 14.2.2013, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 7
Всего: 137



Достаточно будет такого:
Код

$("#selusers").empty().append('<option value="' + data[selgr].user_id + '">' + data[selgr].user_login + '</option>');

PM MAIL WWW ICQ Skype   Вверх
Jops
Дата 14.2.2013, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 31.1.2013

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



Хороший способ. Спасибо!
PM MAIL   Вверх
Aliance
Дата 14.2.2013, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 7
Всего: 137



Только я поспешил и не увидел, что append делается в цикле. В таком случае естественно делать нужно так:
Код

var $select = $("#selusers");
$select.empty();
for (...) {
    $select.append('<option ...>');
}

PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




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


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

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