Самоплодящийся <option>
Здравствуйте уважаемые!
Я к вам с довольно таки нубским вопросом, но ни как не решаемым моими силами. Есть функция, формирующая из данных базы <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>');} } } }); } |
С этим кодом все в порядке. Он ничего не плодит.
Нужно больше кода! |
Я не спорю , что всё впорядке. Просто мне нужно "for" оградить от повторного запроса, что бы он выполнялся один раз. И если диалоговое окно опять обращается к этой функции, то проверить А не наполнен ли <select> или что то в этом роде. Я могу предоставить весь код полностью, но стоит ли, если ограждение требуется здесь))
|
Не вызывайте функцию select_group повторно, вот и все.
|
Так она автоматически вызывается при запуске (обновлении) диалогового окна. Тут иначе ни куда. Либо пал, либо пропал!))
|
Создайте переменную чуть выше объявления этой функции.
var myFlag = false; function select_group() { if (myFlag) return; myFlag = true; ... |
Спасибо большое! Попробую
|
Часовой пояс GMT +3, время: 09:54. |