首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTML -从一个表单模板中创建多个表单

HTML -从一个表单模板中创建多个表单
EN

Stack Overflow用户
提问于 2021-01-13 18:51:54
回答 1查看 193关注 0票数 0

我目前有多个表单,它们相似,但变化很小。首先,用户从下拉菜单中选择表单,然后表单如下所示。

我的表格是这样的。

Number

  • Address

  1. Form 1
    • 客户名
    • 电话

married?

  1. Form 2
    • Customer Name
    • Is

Number

  • Address

  1. Form 3
    • Customer Name
    • Social Security

我的代码看起来像这样。

代码语言:javascript
复制
<select onchange="changeOptions(this)">
    <option value="" selected="selected"></option>
    <option value="form1">f1</option>
    <option value="form2">f2</option>
    <option value="form3">f3</option>
</select>

<form class="className" name="form1" id="form1" style="display:none">
---form---
<form class="className" name="form2" id="form2" style="display:none">
---form---
<form class="className" name="form3" id="form3" style="display:none">
---form---
<script>
    function changeOptions(selectEl) {
        let selectedValue = selectEl.options[selectEl.selectedIndex].value;
        let subForms = document.getElementsByClassName('className')
        for (let i = 0; i < subForms.length; i += 1) {
            if (selectedValue === subForms[i].name) {
                subForms[i].setAttribute('style', 'display:block')
            } else {
                subForms[i].setAttribute('style', 'display:none')
            }
        }
    }
</script>

有没有办法创建一个包含所有表单元素的“main”表单,然后指定在每个表单中使用哪个元素?我现在使用的方法很好,但是重复的代码太多了,如果我试图对其中一个元素进行更改,可能无法正确地进行缩放(因为我必须更改每个元素,并且很容易出错)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-13 19:07:24

您不需要三种不同的表单,只需将所有字段设置为隐藏的表单即可。然后给每个字段提供一个类匹配,以显示该字段的形式。然后根据所选的值简单地显示匹配字段。

代码语言:javascript
复制
select_form = document.querySelector(".select_form");
fields = document.querySelectorAll(".field");

select_form.addEventListener("change", function() {
  fields.forEach(function(el) {
    el.style.display = "none";
  });
  show = document.querySelectorAll("." + this.value);
  show.forEach(function(el) {
    el.style.display = "block";
  });
});
代码语言:javascript
复制
.field {
  display: none;
}
代码语言:javascript
复制
<select class="select_form">
  <option value="" selected="selected"></option>
  <option value="form1">f1</option>
  <option value="form2">f2</option>
  <option value="form3">f3</option>
</select>

<form>
  <div class="field form1 form2">ONLY form1 and 2</div>
  <div class="field form3">ONLY form3</div>
</form>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65708140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档