javascript - 使用 Jquery/Javascript 根据下拉选项删除元素
问题描述
我有一个包含下拉菜单和几个文本字段的表单。如果选择了下拉菜单中的选项之一,我希望表单删除文本区域。因此,如果选择了信用卡选项,那么只有这四个字段才会出现。
- 卡号
- CVV 代码
- 到期日
- 卡片上的名字
如果没有选项或选择 Paypal,则应删除上述 4 个字段。隐藏它们不够的原因是它们是必填字段,因此单独隐藏它们将不允许用户提交表单。
下面是完整的代码。由于代码很乱,我在这里整理了一下:https ://jsfiddle.net/lindychen/ow8zq1y6/28/
谢谢你。
<label for="form-field-field_5" class="elementor-field-label">Payment Method</label>
<div class="elementor-field elementor-select-wrapper ">
<select name="form_fields[field_5]" id="form-field-field_5" class="elementor-field-textual elementor-size-sm" required="required" aria-required="true">
<option value=""></option>
<option value="Paypal">Paypal</option>
<option value="Credit Card">Credit Card</option>
</select>
</div>
</div>
<div class="elementor-field-type-number elementor-field-group elementor-column elementor-field-group-field_6 elementor-col-100 elementor-field-required">
<label for="form-field-field_6" class="elementor-field-label">Card Number</label><input type="number" name="form_fields[field_6]" id="form-field-field_6" class="elementor-field elementor-size-sm elementor-field-textual" placeholder="Card Number" required="required" aria-required="true"> </div>
<div class="elementor-field-type-number elementor-field-group elementor-column elementor-field-group-field_7 elementor-col-100 elementor-field-required">
<label for="form-field-field_7" class="elementor-field-label">CVV Code</label><input type="number" name="form_fields[field_7]" id="form-field-field_7" class="elementor-field elementor-size-sm elementor-field-textual" placeholder="CVV Code" required="required" aria-required="true"> </div>
<div class="elementor-field-type-date elementor-field-group elementor-column elementor-field-group-field_8 elementor-col-100 elementor-field-required">
<label for="form-field-field_8" class="elementor-field-label">Expiry Date</label><input type="text" name="form_fields[field_8]" id="form-field-field_8" class="elementor-field elementor-size-sm elementor-field-textual elementor-date-field flatpickr-input" required="required" aria-required="true"> </div>
<div class="elementor-field-type-text elementor-field-group elementor-column elementor-field-group-field_9 elementor-col-100 elementor-field-required">
<label for="form-field-field_9" class="elementor-field-label">Name on card</label><input size="1" type="text" name="form_fields[field_9]" id="form-field-field_9" class="elementor-field elementor-size-sm elementor-field-textual" placeholder="NAME ON CARD" required="required" aria-required="true"> </div>
解决方案
有很多方法可以解决这个问题:
如果选择了信用卡以外的其他选项,则隐藏 4 个字段 + 从输入字段中删除所需的属性。
$('.elementor-field').attr('required',false);
这将允许用户提交表单。(elementor-field 我以此类为例。您可以将一个单独的类添加到要隐藏的字段中)不是将输入字段放在 html 文件中,而是根据选择动态生成它们。
制作两个单独的表单并根据下拉选择显示和隐藏它们
推荐阅读
- i18next - 如何使用 react-i18next
命名标签? - php - 更新到 WSL2 后无法从 PhpStorm 连接到 Xdebug
- angular - .NET Core + Angular SPA 到 Azure
- git - GitHub Build 容器镜像报错
- javascript - 将元素 jquery 添加到 html
- swift - 一个额外的 UITableViewCellContentView 覆盖出现在 iOS 14 上的 TableView 中,防止点击,但在 iOS 13 上工作正常
- mysql - Kubernetes - 尽管服务存在,但无法从集群内的其他 pod 连接到 MySQL pod
- javascript - 如何删除 setTimeout 并在角度中使用异步等待方法
- python - 使用 Python 进行 DNA 到 RNA 转换:如何在不替换/更改预先替换的输入的情况下替换文本输入?
- sql - 从一个范围内每年提取价值