|
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);
});
})();
|
|