当选择了国家/地区时,如何筛选州/省列表?

时间:2015-08-04 作者:eljefejb

鉴于目前没有针对WooCommerce问题的StackExchange网站(或任何其他论坛,我可以说),我将冒着因“偏离主题”而被击落的风险。

我需要在结帐表单中添加第三个地址部分,我已经这样做了。然而,我不知道如何让“州”选择列表按国家过滤,一旦选择了一个国家,内置的账单和发货地址部分就会出现这种情况。我找不到关于它的任何文档,可能是因为除了默认的帐单和发货地址之外,没有多少人需要更多的东西。是否有人知道如何根据所选国家动态更改“状态”列表中的值?

编辑:状态字段的动态更改必须由JavaScript完成,但如何使应用于默认字段的JavaScript应用于自定义字段?

1 个回复
SO网友:colecmc

下面是一些可以用来完成此任务的通用js。

这段代码是有意泛型的,因此您需要使其适用于您的场景。您可以加载各种状态,并使用“js display toggle”类隐藏它们。当从“基本”选择菜单中选择适当的国家/地区时,您将删除切换类并显示这些国家/地区。

(function(d, undefined) {
  \'use strict\';
  var display = \'js-display-toggle\',
    elems = d.getElementsByClassName(\'items\');

  function addToAll() {
    Array.prototype.slice.call(elems, 0).forEach(function(el, i) {
      el.classList.add(\'js-display-toggle\');
      console.log(\'add\');
    });
  }

  function delegator(event) {
    switch (event.type) {
      case \'change\':
        if (event.target.id === \'base\') {
          addToAll();
          switch (event.target.options.selectedIndex) {
            case 1:
              console.log(\'1\');
              d.getElementById(\'seleks\').classList.remove(display);
              break;
            case 2:
              console.log(\'2\');
              d.getElementById(\'selectionField\').classList.remove(display);
              break;
            case 3:
              console.log(\'3\');
              d.getElementById(\'cars\').classList.remove(display);
              break;
            default:
          }
        }
        break;
    }
  }
  d.addEventListener(\'change\', delegator, false);
}(document, undefined));
.js-display-toggle {
  display: none !important;
  visibility: hidden !important;
}
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>How do you filter the list of states when country is selected?</title>
</head>

<body>
  <form id="my-form">
    <select id="base">
      <option value="0">select one</option>
      <option value="1">first</option>
      <option value="2">second</option>
      <option value="3">third</option>
    </select>
    <select id="seleks" class="js-display-toggle items">
      <option value="value1">Value 1</option>
      <option value="value2">Value 2</option>
      <option value="value3">Value 3</option>
    </select>
    <select id="selectionField" class="js-display-toggle items">
      <option value="CA">California -- CA</option>
      <option value="CO">Colorado -- CO</option>
      <option value="CN">Connecticut -- CN</option>
    </select>
    <select id="cars" class="js-display-toggle items">
      <option value="volvo">Volvo</option>
      <option value="saab">Saab</option>
      <option value="mercedes">Mercedes</option>
      <option value="audi">Audi</option>
    </select>
  </form>
</body>

</html>

结束

相关推荐

将javascript添加到unctions.php会导致模板出现问题

我想要一个“阅读”链接,点击后可以移动到页面的另一部分。I understand the HTML bit 和I have even used some nice scrolling.它起作用了。但当实施时,我的部分主题就被打破了。滑块图像消失,H1文本全部聚集到左侧。下面是我添加到子函数的内容。php,以便将javascript注入头部区域。/** * Smooth scroll */ add_action(\'wp_head\', \'wpse_43672_wp