Контекст
В Prestashop 1.7 существует продавец-помощник, который создает заказ бэк-офисом.
В этой форме параметры доставки обновляются последобавление, удаление или изменение списка товаров для покупки. Клиентам необходимо добавить предопределенный элемент, выбранный с внутренним текстом: «Выберите опцию».
Это поток:
- Клиент добавляет товары в корзину
- Клиент выбирает вариант доставки
- Может повторить 1 и 2
- Затем нажмите Отправить заказ
В 1 и 2 список вариантов доставкиобновлено. Таким образом, я могу добавить фальшивый селектор, когда страница загружена, но когда вы выбираете продукт или вариант доставки, он исчезает.
Какой-то код
Я пытаюсь с наблюдателем мутаций,но когда вы выбираете параметры доставки, наблюдатель обнаруживает изменение DOM и повторно загружает атрибут selected = "".
function renewSelectDisabled() {
if(delivery_option.lastElementChild) {
if(delivery_option.lastElementChild.innerText != "-- Select an option --"){
var node = document.createElement("OPTION");
node.setAttribute("disabled", "");
node.setAttribute("selected", "");
node.setAttribute("value", "");
var textnode = document.createTextNode("-- Seleccione una opción --");
node.appendChild(textnode);
document.getElementById("delivery_option").appendChild(node);
return;
}
else if(delivery_option.lastElementChild.innerText == "-- Seleccione una opción --"){
return;
}
else {
requestAnimationFrame(renewSelectDisabled);
}
}
else {
requestAnimationFrame(renewSelectDisabled);
}
}
function addSelectDisabled(){
let observer = new MutationObserver(callback);
function callback (mutations) {
requestAnimationFrame(renewSelectDisabled);
}
targetNode = document.getElementById('delivery_option')
let observerOptions = {
childList: true,
attributes: false,
characterData: false,
subtree: false,
attributeOldValue: false,
characterDataOldValue: false
};
observer.observe(targetNode, observerOptions);
}
Что мне нужно?
Мне это нужно, когда клиентдобавляйте новые товары в корзину и не добавляйте их при выборе способа доставки.
<select name="delivery_option" id="delivery_option">
<option value="87,">Delivery in 3 days</option>
<option value="123,">Office Calbuco</option>
<option value="107,">Office Curacautín</option>
<option value="119,">Office Entre Lagos</option>
<option value="116,">Office Futrono</option>
<option value="117,">Office La Unión</option>
<option value="110,">Office Lanco</option>
<option value="121,">Office Llanquihue</option>
<option value="109,">Office Loncoche</option>
<option value="114,">Office Los Lagos</option>
<option value="122,">Office Los Muermos</option>
<option value="113,">Office Máfil</option>
<option value="124,">Office Paillaco</option>
<option value="111,">Office Panguipulli</option>
<option value="108,">Office Pitrufquén</option>
<option value="120,">Office Purranque</option>
<option value="118,">Office Rio Bueno</option>
<option value="112,">Office San José de La Mariquina</option>
<option disabled="" select="" value="">-- Select an option --</option>
</select>
Спасибо, что прочитали меня, я надеюсь, что будет более ясным. Привет,