单击表单上的任意位置后,表单输入将被禁用

Form inputs get disabled after clicking anywhere on the form

提问人:Gérald Moïse 提问时间:11/1/2023 最后编辑:Gérald Moïse 更新时间:11/3/2023 访问量:28

问:

我是初学者开发人员,如果我错过了相关信息,请告诉我。

在我的 MVC 应用程序中,我有这种奇怪的行为。表单加载并准备好接收输入。一旦我单击该字段或表单上的任何位置,所有字段都会被禁用,包括下拉列表和输入。如果我手动切换模式以显示并单击取消或连续,则字段将重新启用,如果我手动切换为隐藏,表单也会重新启用。在添加模态之前,这不会发生。

这是模态:

<div class="modal fade" id="confirmationModal">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Veuillez confirmer</h5>
            </div>
            <div class="modal-body">
                En cliquant continuer, vous créez un utilisateur pour le client suivant:
                <p>Client ID: <span id="modal-client-id"></span></p>
                <p>Compagnie: <span id="modal-company-name"></span></p>
                <p>Adresse: <span id="modal-address"></span></p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" onclick="cancelUserCreation()" data-dismiss="modal">Canceller</button>
                <button type="button" class="btn btn-primary" onclick="confirmUserCreation()">Confirmer</button>
            </div>
        </div>
    </div>
</div>

这是相关脚本

            function showConfirmationModal() {
                debugger;
                function getDivision() {
                    if ($('#divisionBorea').val()) {
                        return 2;
                    }
                    return 1;
                }
                var clientId = $('#ClientId').val();
                var division = getDivision();

                $.ajax({
                    url: '@Url.Action("Method", "Controller")',
                    method: 'POST',
                    data: {
                        clientId: clientId,
                        division: division
                    },
                    success: function (response) {
                        if (response.success) {
                            $('#modal-client-id').text(clientId);
                            $('#modal-company-name').text(response.data.Name);
                            $('#modal-address').text(response.data.Address1);
                            $('#confirmationModal').modal('show');
                        }
                    },
                    error: function () {
                        toastr['error']('Aucun client trouver avec ce ClientID')
                    }
                })
            }

            const handleSubmit = e => {
                e.preventDefault();
                const password = $("#Password").val();
                const passwordValidationResult = validatePassword(password);
                const divisionValidationResult = validateDivisionSelected();

                if (passwordValidationResult) {
                    $("[data-password-hint]").text(passwordValidationResult);
                }
                if (!divisionValidationResult) {
                    $("[data-division-hint]").text("Vous devez choisir une division")
                } else {
                    $("[data-division-hint]").text("")
                }

                if (passwordValidationResult || !divisionValidationResult) {
                    return;
                }
                else {
                    showConfirmationModal();
                }
            };
            form.on('submit', handleSubmit);
        });

知道是什么原因导致了这种行为吗?

我尝试将隐藏添加到html类中,但没有变化 尝试在document.ready函数中设置hide属性,但没有更改 尝试注释掉禁用表单的脚本部分

注释掉模态可以解决问题

javascript asp.net-mvc 引导模式

评论

0赞 mykaf 11/2/2023
它们被禁用,因为它们设置了 disabled 属性?当您检查表单时,您是否看到表单上有事件?
0赞 Gérald Moïse 11/3/2023
没有禁用,也没有附加任何事件。但我确实发现了这个问题,以防它对某人有所帮助。尽管我的模态是隐藏的并且不被认为是活动的,但它位于其他所有内容之上,因此看起来像是被禁用的。设置模态的 style=“display:none” 修复了它。

答:

0赞 Gérald Moïse 11/3/2023 #1

我发现了这个问题,以防它对任何人有帮助。尽管我的模态是隐藏的并且不被认为是活动的,但它是不可见的,并且位于其他所有内容之上,因此输入被禁用。在模态上设置 style=“display:none” 修复了它。