下拉菜单 table,其中第二列值取决于第一列值

Dropdown menu table, where the second column value depends on the first column value

我的公司让我开发一个供内部使用的网站。该网站包含一个具有多行和多列下拉菜单的表单。

第一列包含我们销售的产品类型,而第二列包含设备的子类型。 (例如:Type1 - Model1,或 Type1 - Model2)

多行的目的是让我们可以同时上传多个设备。 到目前为止,我想出了这个:

  <tr><td><select name="category">
      <option value="0">-</option>
      <option value="1">Type1</option>
      <option value="2">Type2</option>
      <option value="3">Type3</option>
      <option value="4">Type4</option>
  </select></td>
  <td><select name="items">
      <option value="3">-</option>
  </select> </td> </tr>
  <tr><td><select name="category">
      <option value="0">-</option>
      <option value="1">Type1</option>
      <option value="2">Type2</option>
      <option value="3">Type3</option>
      <option value="4">Type4</option>
  </select></td>
  <td><select name="items">
      <option value="3">-</option>
  </select> </td> </tr>

和脚本部分:

var categories = {
  "-": [{value: '3',text: '-'}],
  "Type1": [{value: '1',text: 'model1'}, {value: '2',text: 'model2'}],
  "Type2": [{value: '4',text: 'model3'}, {value: '10',text: 'model4'}],
  "Type3": [{value: '6',text: 'model5'},{value: '6',text: 'model6'}, {value: '7',text: 'model7'}],
  "Type4": [{value: '8',text: 'model8'}, {value: '9',text: 'model9'}, {value: '11',text: 'model10'}, {value: '12',text: 'model11'}, {value: '13',text: 'DELUXE EDITION'}]
};

function selectchange() {
  var select = $('[name=items]');
  select.empty();

  $.each(categories[$(':selected', this).text()], function() {
    select.append('<option value="' + this.value + '">' + this.text + '</option>');
  });
}
$(function() {
  $('[name=category]').on('change', selectchange);
});

我不需要数据库,因为产品和型号列表不会发生重大变化。 我的问题是:例如,每当我更改第二行子类型时,第一行子类型也会更改。我应该在脚本中修改什么以使每一行单独运行? (最好是我可以 $_post 所有值作为数组。)

在这里工作的 JFiddle 示例: https://jsfiddle.net/L2cwqrus/

每行的字段名称需要不同 - 例如,category_1、items_1、category_2、items_2。

为了避免必须重复 selectchange() 函数(例如,selectchange_1、selectchange_2 等),添加一个 class(例如,class="category") 到所有 category_xx 字段,而不是 $('[name=category]').on('change'... 使用 $('.category')。 on('change'... 并将 id 中的数字传递给 selectchange()。

您的 <select> 对元素似乎同名。当您执行 $('[name=items]') 时,JQuery 选择 所有 匹配的元素,然后您的 .append() 调用将项目附加到两个下拉菜单。

这是一个 JSFiddle,它为每对下拉菜单使用单独的名称来说明一个解决方案:https://jsfiddle.net/prutbkr8/