【问题标题】:Problem disabling specific select dropdown fields using Javascript使用 Javascript 禁用特定选择下拉字段的问题
【发布时间】:2019-09-21 16:34:54
【问题描述】:

我正在开发一个应用程序,我有一些卡片 选择下拉字段。 在卡片上,我编写了一个 JavaScript 逻辑,如果用户 选择了妻子或丈夫作为任何卡片上的选项 选择下拉,任何其他丈夫或妻子下拉字段 应该禁用。

问题是当我从任何卡中选择一个选项时,其他卡没有禁用。 基本上我想当用户选择妻子或丈夫选项时 在任何卡片上,其他卡片上的所有其他丈夫或妻子选项都应 立即禁用。

我在控制台中收到此错误:

TypeError:document.querySelectorAll(...).addEventListener 不是函数

标记代码

<!-- Card 1 -->
<form method="POST" action="#" id="phase3">
        <input type="hidden" name="_token" id="token" value="{{ csrf_token() }}">
        <!-- Gender -->
        <div class="row registerRelationph3">
            <label class="fm-input"> Relation :</label>
            <select class="fm-input otherMenu" id="relation1" required>
                <option value="Husband"> Husband </option>
                <option value="Wife"> Wife </option>
                <option value="Son"> Son </option>
                <option value="Daughter"> Daughter </option>
            </select>
        </div>
        <!-- END -->

        <!-- DOb -->
        <div class="row">
        <label class="fm-input" style="font-size: 10px;"> Date Of Birth :</label>
        <input type="text" id="dob" class="fm-inputph3" placeholder="Date of Birth" value="" required>
        </div>
        <!-- END dob -->
            <button class="btn btn-lg" type="submit"> Save Details <i class="fa fa-check-circle" ></i></button>
</form>
<!-- End card 1 -->

<!-- Card 2-->
<form method="POST" action="#" id="phase3">
        <input type="hidden" name="_token" id="token" value="{{ csrf_token() }}">
        <!-- Gender -->
        <div class="row registerRelationph3">
            <label class="fm-input otherMenu"> Relation :</label>
            <select class="fm-input" id="relation1" required>
                <option value="Husband"> Husband </option>
                <option value="Wife"> Wife </option>
                <option value="Son"> Son </option>
                <option value="Daughter"> Daughter </option>
            </select>
        </div>
        <!-- END -->

        <!-- DOb -->
        <div class="row">
            <label class="fm-input" style="font-size: 10px;"> Date Of Birth :</label>
            <input type="text" id="dob" class="fm-inputph3" placeholder="Date of Birth" value="" required>
        </div>
        <!-- END dob -->
            <button class="btn btn-lg" type="submit"> Save Details <i class="fa fa-check-circle" ></i></button>
</form>
<!-- End card 2-->

<!-- Card 3-->
<form method="POST" action="#" id="phase3">
        <input type="hidden" name="_token" id="token" value="{{ csrf_token() }}">
        <!-- Gender -->
        <div class="row registerRelationph3">
            <label class="fm-input"> Relation :</label>
            <select class="fm-input otherMenu" id="relation1" required>
                <option value="Husband"> Husband </option>
                <option value="Wife"> Wife </option>
                <option value="Son"> Son </option>
                <option value="Daughter"> Daughter </option>
            </select>
        </div>
        <!-- END -->

        <!-- DOb -->
        <div class="row">
            <label class="fm-input" style="font-size: 10px;"> Date Of Birth :</label>
            <input type="text" id="dob" class="fm-inputph3" placeholder="Date of Birth" value="" required>
        </div>
        <!-- END dob -->
            <button class="btn btn-lg" type="submit"> Save Details <i class="fa fa-check-circle" ></i></button>
</form>
<!-- End card 3-->

Javascript 代码

document.querySelectorAll('.otherMenu').addEventListener('change', function() {
    var selectedOption = this.value;
    var selectWife = document.querySelectorAll('.otherMenu option[value="Wife"]');
    var selectHusband = document.querySelectorAll('.otherMenu option[value="Husband"]');
        selectWife.forEach(function(option) {
            option.disabled = selectedOption === 'Wife';
        });
        selectHusband.forEach(function(option) {
            option.disabled = selectedOption === 'Husband';
        });
});

【问题讨论】:

    标签: javascript drop-down-menu disabled-input


    【解决方案1】:

    我认为您不能在菜单列表中添加事件监听器 每个菜单都必须这样做

    var menus = document.querySelectorAll('.otherMenu');
    for (let menu of menus) {
        menu.addEventListener('change', function () {
            var selectedOption = this.value;
            var selectWife = document.querySelectorAll('.otherMenu option[value="Wife"]');
            var selectHusband = document.querySelectorAll('.otherMenu option[value="Husband"]');
            selectWife.forEach(function (option) {
                option.disabled = selectedOption === 'Wife';
            });
            selectHusband.forEach(function (option) {
                option.disabled = selectedOption === 'Husband';
            });
        });
    }
    

    【讨论】:

    • ,,非常感谢您的帮助,当我添加更多卡片并选择并选择丈夫或妻子选项时,我选择的第一张卡片上的禁用属性被删除
    • 首先,您不应该在每张卡中使用相同的 id 进行输入。如果我的回答解决了您的问题,请您将其标记为正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 2016-01-13
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多