提交表单时显示或识别并突出显示隐藏的必填字段

乔迪·卡斯蒂利亚

场景:我有一个包含多个手风琴的表单(它们是可扩展的div),每个表单都有一些必填字段,用户可以自由折叠或扩展它们,因此,在某些情况下,存在未填充的强制性隐藏字段(因为折叠)提交表单时。

问题:在Chrome中,用户不会看到任何错误,只有在控制台中您才能阅读:

名称=''的无效表单控件不可聚焦。

我已经找到了许多解决这个问题的方法。我完全知道为什么会这样,但是我没有找到解决问题的办法。

我已经尝试过的操作:在提交表单之前,展开所有手风琴以显示所有必填字段,这样我就可以允许浏览器聚焦元素并显示必填字段消息(请参阅更新)

所需的解决方案:标识需要内容的必填字段的ID,以扩展它的手风琴容器并集中该字段

更新:解决方案发现在所有情况下都无法通过javascript扩展所有可折叠div,因此不是解决方案。

问题:有一些方法可以在验证之前显示该字段?如果否...提交表单时,我可以集中精力还是识别一个隐藏的必填字段。

阿尔瓦罗·蒙托罗

我个人会赞同Niet the Dark Absol的建议,即在更改节和显示警告标志时检查字段(我认为这样做会带来更好的用户体验)。

但是,如果您想继续检查表单提交,则有一种方法可以诱使浏览器使用JavaScript来完成所需的工作。浏览器识别并突出显示页面验证时可见的第一个无效字段(对于IE和FF,它将突出显示所有可见的无效字段);因此,在进行表单验证之前,您需要运行快速检查并打开包含第一个无效字段的手风琴部分。

关键是在HTML5验证发生之前运行该检查这意味着onsubmit不够好,因为浏览器将在submit事件发生之前进行验证单击提交按钮/图像时,您需要运行代码,因为该click事件发生在浏览器验证字段之前。

您没有指定是用于jQuery UI还是Bootstrap,因此这里是这两个示例(代码相似,只是更改了处理手风琴打开/关闭的方式):

JQUERY UI手风琴

您可以在以下JSFiddle上看到jQuery UI的有效演示:http : //jsfiddle.net/ma8v32ug/1/JavaScript检查如下:

// save the accordion in a variable as you'll need it later
$accordion = $("#accordion").accordion();

// when the submit is clicked
$("#myForm input[type='submit']").on("click", function(event) {

    // traverse all the required elements looking for an empty one
    $("#myForm input[required='required']").each(function() {

        // if the value is empty, that means that is invalid
        if ($(this).val() == "") {

            // find the index of the closest h3 (divide by 2 because jQuery UI accordion goes in pairs h3-div. A bit hacky, sorry)
            var item = $(this).closest(".ui-accordion-content").prev().index() / 2;

            // open that accordion section that contains the required field
            $accordion.accordion("option","active", item);

            // stop scrolling through the required elements
            return false;
        }
    });
});

自举手风琴

注意:这对Bootstrap版本3.3.4有效。我没有签入旧版本或新版本。

Bootstrap要考虑的一件事很重要,那就是您不能使用该.collapse({toggle: true})功能,因为动画花费的时间比浏览器验证表单所需的时间还要长,并且结果将是意外的(通常,浏览器将使动画停止指向)错误,它将不是您想要的字段)。

一种解决方案是更改动画即可进行切换,只需更改.in面板中类并调整目标面板高度即可。最后,该函数看起来与jQuery UI的函数非常接近,只是略有变化:

// when the submit is clicked
$("#myForm input[type='submit']").on("click", function(event) {

    // traverse all the required elements looking for an empty one
    $("#myForm input[required='required']").each(function() {

        // if the value is empty, that means that is invalid
        if ($(this).val() == "") {

            // hide the currently open accordion and open the one with the invalid field
            $(".panel-collapse.in").removeClass("in");
            $(this).closest(".panel-collapse").addClass("in").css("height","auto");

            // stop scrolling through the required elements
            return false;
        }
    });
});

您可以看到它在此JSFiddle上运行:http : //jsfiddle.net/ma8v32ug/2/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使必填字段的ngMessage仅在肮脏或提交表单时显示?

来自分类Dev

无论如何,在表单验证中是否要突出显示Codename One中的必填字段

来自分类Dev

Codenameone验证程序未突出显示必填字段

来自分类Dev

如何在extjs中以黄色突出显示必填字段

来自分类Dev

如何在extjs中以黄色突出显示必填字段

来自分类Dev

未填写必填字段时仍在提交表单

来自分类Dev

使用JQuery提交表单-必填字段

来自分类Dev

必填字段时,不显示AngularJS验证消息

来自分类Dev

提交时忽略必填字段验证

来自分类Dev

从下拉菜单中选择时,为显示/隐藏文本框提供必填字段

来自分类Dev

需要显示学生表的必填字段

来自分类Dev

Django表单,尽管已填写,但显示“此字段是必填字段”(甚至是文本字段)

来自分类Dev

AngularJS-防止提交带有必填字段的表单

来自分类Dev

在 JQuery 提交表单之前验证必填字段

来自分类Dev

即使必填字段为空,我的表单也会提交

来自分类Dev

如何使PHP验证表单中的下拉菜单显示“ *必填字段”错误消息?

来自分类Dev

angularjs:我需要重设表单而不用红色显示必填字段

来自分类Dev

在表单提交时显示/隐藏元素

来自分类Dev

表单错误-必填字段

来自分类Dev

按钮提交时将触发必填字段验证器

来自分类Dev

创建表单时如何添加必填字段?

来自分类Dev

在WordPress中提交时,联系表单7验证中的两个必填字段之一

来自分类Dev

使表单字段为必填字段

来自分类Dev

单元测试角度表单以确保除非提供必填字段,否则无法提交表单

来自分类Dev

如何防止提交但仍验证必填字段?

来自分类Dev

仅当表单为新表单时才如何使字段为必填字段?

来自分类Dev

表单中的动态必填字段

来自分类Dev

用户表单中的必填字段

来自分类Dev

Symfony Dependance 必填字段的表单

Related 相关文章

  1. 1

    如何使必填字段的ngMessage仅在肮脏或提交表单时显示?

  2. 2

    无论如何,在表单验证中是否要突出显示Codename One中的必填字段

  3. 3

    Codenameone验证程序未突出显示必填字段

  4. 4

    如何在extjs中以黄色突出显示必填字段

  5. 5

    如何在extjs中以黄色突出显示必填字段

  6. 6

    未填写必填字段时仍在提交表单

  7. 7

    使用JQuery提交表单-必填字段

  8. 8

    必填字段时,不显示AngularJS验证消息

  9. 9

    提交时忽略必填字段验证

  10. 10

    从下拉菜单中选择时,为显示/隐藏文本框提供必填字段

  11. 11

    需要显示学生表的必填字段

  12. 12

    Django表单,尽管已填写,但显示“此字段是必填字段”(甚至是文本字段)

  13. 13

    AngularJS-防止提交带有必填字段的表单

  14. 14

    在 JQuery 提交表单之前验证必填字段

  15. 15

    即使必填字段为空,我的表单也会提交

  16. 16

    如何使PHP验证表单中的下拉菜单显示“ *必填字段”错误消息?

  17. 17

    angularjs:我需要重设表单而不用红色显示必填字段

  18. 18

    在表单提交时显示/隐藏元素

  19. 19

    表单错误-必填字段

  20. 20

    按钮提交时将触发必填字段验证器

  21. 21

    创建表单时如何添加必填字段?

  22. 22

    在WordPress中提交时,联系表单7验证中的两个必填字段之一

  23. 23

    使表单字段为必填字段

  24. 24

    单元测试角度表单以确保除非提供必填字段,否则无法提交表单

  25. 25

    如何防止提交但仍验证必填字段?

  26. 26

    仅当表单为新表单时才如何使字段为必填字段?

  27. 27

    表单中的动态必填字段

  28. 28

    用户表单中的必填字段

  29. 29

    Symfony Dependance 必填字段的表单

热门标签

归档