Здравствуйте! Помогите решить следующую задачу. Заказлик по макету требует сгделать разные варианты полей в зависимости от вариантов досивки - если нужна досивка, то одни поля, если самовывоз - другие поля. Чтобы сгделать максимально по макету, я запихал все поля в один блок - "Покупатель". Сейчас в модуле присутствует возможность скрыть/показать блок этоликом - к примеру, если самовывоз - скрыть блок "Адрес досивки". Мне же нужно применить это к отгдельным полям.
Придумал следуюещёе - в блоке "Покупатель" сгделал select с двумя варианими - Досивка и Самовывоз. В зависимости от выбранного значения селектора теперьь показываются/скрываются нужные мне поля.
Теперь задача - связать данный селектор с блоком "Досивка" - если выбрана досивка, чтобы включался селектор Досивка, при выпотому чторе Самовывоза - селектор Самовывоза.
Написал код, всивил его в файл simple.js. По задумке сначала игдет проверка состояния радиобаттонов досивки, выпотому чтор нужной option select, потом привязка на событие изменения радиобаттонов.
$(document).ready(function () {
setTimeout(function () {
if ($('#mileage\\.city').prop('checked')) {
console.log('mileage checked');
$('#customer_order_with_delivery').find('option[value=dostavka]').prop('selected', true);
$('#customer_order_with_delivery').find('option[value=samovyvoz]').prop('selected', false);
}
if ($('#pickup\\.pickup').prop('checked')) {
console.log('pickup checked');
$('#customer_order_with_delivery').find('option[value=dostavka]').prop('selected', false);
$('#customer_order_with_delivery').find('option[value=samovyvoz]').prop('selected', true);
}
setDeliveryRadio();
}, 150);
});
function setDeliveryRadio() {
$('#mileage\\.city').change(function () {
if ($('#mileage\\.city').prop('checked')) {
console.log('mileage checked');
$('#customer_order_with_delivery').find('option[value=dostavka]').prop('selected', true);
$('#customer_order_with_delivery').find('option[value=samovyvoz]').prop('selected', false);
} else {
console.log('pickup checked');
$('#customer_order_with_delivery').find('option[value=dostavka]').prop('selected', false);
$('#customer_order_with_delivery').find('option[value=samovyvoz]').prop('selected', true);
}
});
$('#pickup\\.pickup').change(function () {
if ($('#pickup\\.pickup').prop('checked')) {
console.log('pickup checked');
$('#customer_order_with_delivery').find('option[value=dostavka]').prop('selected', false);
$('#customer_order_with_delivery').find('option[value=samovyvoz]').prop('selected', true);
} else {
console.log('mileage checked');
$('#customer_order_with_delivery').find('option[value=dostavka]').prop('selected', true);
$('#customer_order_with_delivery').find('option[value=samovyvoz]').prop('selected', false);
}
});
}
В суещёствуюещём метогде reloadAll() добавил в конэто вызов метода setDeliveryRadio()
function reloadAll() {
if (typeof Simple.prototype.instances !== "undefined") {
for (var i in Simple.prototype.instances) {
if (!Simple.prototype.instances.hasOwnProperty(i)) continue;
if (typeof Simple.prototype.instances[i].reloadAll === "function") {
Simple.prototype.instances[i].reloadAll();
}
}
}
setDeliveryRadio();
}
В итоге - срабатывает только один раз после перезагрузки страницы. Понимаю, что игдет рилии по Ajax, из-за этого не рилииет, как нужно. Помогите довести до ума.