【问题标题】:Select value changes but visible option selected does not选择值更改,但选择的可见选项没有
【发布时间】:2020-02-13 13:52:24
【问题描述】:

我正在通过覆盖 cart-shipping.php 文件 (WooCommerce) 来使用 WordPress。用选项填充选择后:

<?php
if (strpos($chosen_method, 'pickup_') !== false) {
    printf('<li><select name="select" id="method_pickups" onchange="handlePickup()">');
    foreach ($select as $key => $value) {
        printf('<option value="'.$key.'">'.$value.'</option>');
    }
    printf('</select></li>');
}
?>

我想通过使用这样的javascript将一个存储在会话存储中来设置选定的值:

document.addEventListener('DOMContentLoaded', () => {
    const method_pickups = document.querySelector('#method_pickups');
    method_pickups.value = sessionStorage.getItem('method_pickups_soda');
    handlePickup();
});

const handlePickup = () => {
    const method_pickups = document.querySelector('#method_pickups');
    const billing_pickups = document.querySelector('#billing_pickups');
    sessionStorage.setItem('method_pickups_soda', method_pickups.value);

    if (!window.location.href.includes('carrito')) {
        billing_pickups.value = method_pickups.value;

        const index = method_pickups.selectedIndex;
        const display = document.querySelector('#display_pickup');
        display.value = method_pickups.options[index].text;
    }
};

问题在于,即使它的值被更改(导致简单的console.log() 显示新值),它在视觉上也是相同的选项。这是怎么回事?

在此先感谢,并为我的英语不好感到抱歉。

【问题讨论】:

  • 但它得到了价值。如果我记录 method_pickups_soda 的值,它会显示存储的内容。该代码甚至更改了选择的值。现在唯一不起作用的是视觉部分。即使值不同,它仍然使用旧选项。
  • @Pointy 我刚刚将我的handlePickup() 函数添加到问题中。
  • 好的对不起,我看错了代码;我会删除我之前的评论。
  • 不用说,这应该并且确实有效:jsfiddle.net/khrismuc/h7rfsekz 我们需要查看最终代码,而不是 PHP 源代码,我们需要查看您尝试设置的值。调试的第一个顺序是在任何地方放置console.log() 命令,以确保 a) 您的代码被调用 b) 变量包含您认为它们包含的内容
  • 这是问题的一部分。我创建了一个代码,只有一个带有一些选项的选择,通过使用相同的代码更改了值,它工作得很好。我认为这是一个与 wordpress 相关的问题,但我看不到发生了什么。

标签: javascript php wordpress woocommerce


【解决方案1】:

嗯,问题在于正在处理的 ajax 请求阻止了更改。为了解决我的问题,我等待它完成:

jQuery(document).ajaxStop(function () {
    const method_pickups = document.querySelector('#method_pickups');
    method_pickups.value = sessionStorage.getItem('method_pickups_soda');
    handlePickup();
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-07
    • 2015-11-05
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多