|
Javascript'исты помогите туплю. | ☑ | ||
---|---|---|---|---|
0
v-kam
25.09.15
✎
11:37
|
Что то не могу догнать как сделать очистку полей.
Смысл: Есть форма подачи объявления с автозаполнением. Пользователь выбирает марку - загружается модель, выбираем модель - загружаются года выпуска, выбирает год выпуска - ..., etc. Так вот если пользователь уже выбрал допустим марку, модель, год, кузов. А потом вдруг берет и меняет допустим марку, значит надо загрузить модели этой марки а все следующие поля очистить и заблокировать. Как сделать такое что то не догоню. Код прилагаю html: <div class="mod"> <span id="url"></span> <table> <tr> <td>Марка:</td> <td><select id="mark" name="mark"><?php echo get_mark(); ?></select></td> </tr> <tr> <td>Модель:</td> <td><select id="model" name="model"></select></td> </tr> <tr> <td>Год:</td> <td><select id="year" name="year"></select></td> </tr> <tr> <td>Кузов:</td> <td><select id="body" name="body"></select></td> </tr> <tr> <td>Поколение:</td> <td><select id="breed" name="breed"></select></td> </tr> <tr> <td>Двигатель:</td> <td><select id="engine" name="engine"></select></td> </tr> <tr> <td>Привод:</td> <td><select id="drive" name="drive"></select></td> </tr> <tr> <td>КПП:</td> <td><select id="gearbox" name="gearbox"></select></td> </tr> <tr> <td>Модификация:</td> <td><select id="modification" name="modification"></select></td> </tr> </table> </div> javascript: (function() { "use strict"; // все поля по очереди var field = ["mark", "model", "year", "body", "breed", "engine", "drive", "gearbox", "modification"]; // функция отправляет запрос и передает объектом json в callBack var load = function(element, callBack) { var url = "add_json.php?field_name=" + element.name; // собираем url до текущего поля for (var i = 0; i < field.length; i++) { var current = document.getElementById(field[i]); url += "&" + current.name + "_id=" + current.value; if (current === element) break; } // отправляем запрос, вызываем callBack $.getJSON(url, function(data){ callBack.call(data) }) }; // функция заполняет поля, !!!рекурсия var get_data = function (element) { var select = false; for (var i = 0; i < field.length; i++) { var current = document.getElementById(field[i]); if (select) { load(element, function() { $(current).empty().append("<option value=\"\">зделайте выбор</option>"); for (var i=0; i<this.length; i++) { $(current).append("<option value=\""+this[i]['id']+"\">"+this[i]['name']+"</option>"); } // если вариант выбора только один - выбираем его и продолжаем грузить. if (this.length == 1) { current.children[1].selected = true; get_data(current); } }); break; } if (current == element) select = true; } } // Отрабатываем событие $('.mod').on('change', 'select', function() { get_data(this); }); })(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |