关注提交时第一个 .ng-invalid 字段 - 不适用于 radios-inline

2024-06-06

我正在使用已接受答案中的指令将焦点设置在 AngularJs 表单中的第一个无效输入上 https://stackoverflow.com/questions/20365121/set-focus-on-first-invalid-input-in-angularjs-form为了实现这一点:

app.directive('accessibleForm', function () {
    return {
        restrict: 'A',
        link: function (scope, elem) {

            // set up event handler on the form element
            elem.on('submit', function () {

                console.log("inside focus directive");
                // find the first invalid element
                var firstInvalid = elem[0].querySelector('.ng-invalid');
                //if we find one, set focus
                if (firstInvalid) {
                    firstInvalid.focus();
                }
            });
        }
    };
});

只要我不使用内联无线电,焦点就可以工作。请参考:http://jsfiddle.net/mutharasus/mu7y4k8f/ http://jsfiddle.net/mutharasus/mu7y4k8f/

但是,如果第一个错误恰好发生在无线电内联字段上,则焦点不起作用。请参考:http://jsfiddle.net/mutharasus/00jzbL6g/ http://jsfiddle.net/mutharasus/00jzbL6g/

我不知道如何修复。请帮忙。


The radio-inline正在添加ng-invalid类到字段标签而不是每个单独的无线电输入。

您可以更改该指令并在自定义指令中实现您想要的行为(您需要将 ng-invalid 添加到每个无线电输入)或更改accessibleForm指令检查无效元素是否是标签,在这种情况下,找到与其关联的第一个无线电输入:

app.directive('accessibleForm', function () {
    return {
        restrict: 'A',
        link: function (scope, elem) {

            // set up event handler on the form element
            elem.on('submit', function () {

                console.log("inside focus directive");

                // find the first invalid element
                var firstInvalid = elem[0].querySelector('.ng-invalid');

                // If we got a label, then it is a radio-inline
                if(firstInvalid && firstInvalid.tagName === 'LABEL') {
                    firstInvalid =  elem[0].querySelector('.ng-invalid + div input[type=radio]')
                }

                firstInvalid && firstInvalid.focus();

            });
        }
    };
});

尽管它看起来像是最简单的解决方案,但对我来说,拥有第二个查询选择器看起来不太合适,它很大程度上依赖于该特定指令的结构,就好像它改变了然后accessibleForm指令将再次被破坏。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关注提交时第一个 .ng-invalid 字段 - 不适用于 radios-inline 的相关文章

  • Angular ng-repeat 导致闪烁

    我正在使用以下代码显示缩略图列表 div class channel img class channel img div 在控制器中 我有一个 ajax 请求 它可以获取新的缩略图 因此 Angular 会更新图像 但会导致闪烁 有没有办法
  • 打字稿中带有谷歌标记的自定义属性

    我正在使用类型脚本 并在尝试使用 Google 标记设置自定义属性时出现以下错误 谁能建议如何使用 Google 地图标记设置自定义属性 类型参数 position LatLng 地图 任何 图标 字符串 zIndex 数字 se10 任何
  • 角度2:语法错误:意外的标记<(...)

    我知道 这个问题已经被问过 但我找不到适合我的特定情况的解决方案 我无法理解错误的真正原因 我有一个运行良好的 angularjs2 应用程序 现在我想导入marked图书馆 我做了什么 npm install marked tsd ins
  • 不使用 data-* 前缀的自定义 HTML 属性是否有效? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 手风琴内的 ui bootstrap datepicker 不可见

    我正在尝试在手风琴内制作一个带有日期选择器的模块 问题是日期选择器弹出框在手风琴上不可见 这是一个显示问题的笨蛋 http plnkr co edit jBqU0LXQFcUuzQLency2 p preview http plnkr co
  • 从 Rest API 响应内容处置输出中下载 javascript 中的 excel 文件 [对象,对象]

    我想从我的 angularJs 代码下载一个 excel 文件 我向 Java Rest API 发出 http post 请求并返回带有标头的文件 Content Disposition 附件 文件名 new excel file xls
  • AngularJS:如何通过 websocket 发送文件?

    我是 websocket 的新手 我被分配了一个现有的工作聊天模块 目前该模块仅向其他用户发送消息 我被要求集成用户可以互相发送 附件 的功能 供参考 我发现了这个链接 https stackoverflow com questions 1
  • AngularJS:从控制器内读取路由参数

    如何在 AngularJS 控制器中读取 URL 中的参数 假设我有一个像这样的网址http localhost var value我希望将该值存储在控制器内的变量中 var value URL 我尝试过使用 routeParams val
  • Spring 和 Angular JS

    我正在使用 Spring 和 Angular JS 开发一个应用程序 但我不知道我所做的是否正确 在同一个 Maven 项目中 我做了 一个用户类 然后我创建了一个 RestController 在其中创建了我的 webservice 在
  • angular.js - 欧洲表示法中的十进制数字

    在 Angular 中 您可以使用货币过滤器来格式化数字 如下所示 service price currency 标准输出是 0 00 输出如何 0 00 欧洲符号 角支撑i18n位置标准 全球化 国际化 当涉及到数字格式时 Angular
  • 识别 ASP.NET MVC 代码中的 Angular js AJAX 调用

    我正在使用 ASP NET MVC 和 AngularJS 开发一个示例应用程序 在服务器端代码中 我编写了一个Action过滤器属性 其中我需要检查请求是普通请求 浏览器 还是AJAX请求 public override void OnA
  • Angular 1 到 Angular 5(导入嵌套组件)

    Before 角度1 5 用户界面路由器 Now 角5 0 如何在像 Angular 1 5 这样的组件父组件中导入子组件 我从 Angular 5 开始制作教程 Heroes 但没有解释这个过渡 所有组件都导入到 app modole t
  • AngularJS 应用程序:如何将 .js 文件包含到 index.html 中

    我是 angularJS 的新手 我设法使用 AngularJS 构建了一个phonegap应用程序 该应用程序正常并且运行良好 问题是 现在我对 angularJS 的工作原理有了更多的了解 至少我认为我已经了解了 我担心我的应用程序文件
  • 如何使用 state go 方法在 Angular 状态路由器中的网址 url 中形成查询字符串

    我有一个产品列表页面 有产品列表 当单击特定产品时 调用该函数并在函数 state go 中 不在动态模式下工作 state go home product detail productID redminote4 brand x store
  • AngularJS 指令在元素完全加载之前运行

    我有一个附加到动态生成的指令 table 模板内的元素 该指令在 a 中操作该表的 DOMlink功能 问题是该指令在渲染表之前运行 通过评估ng repeat指令 那么表是空的 Question 如何确保该指令在表格完全呈现后运行 tab
  • Angular 2 TypeError:无法读取 null 的属性“animate”

    我正在使用 Chrome 51 和 Angular 2 rc4 并在加载我的 Angular 应用程序时在控制台中弹出以下错误 TypeError Cannot read property animate of null at e supp
  • HttpContext.Current.Items["value"] 不起作用,因为 AngularJS 调用创建新会话

    我正在使用 C MVC 和 AngularJS 我的问题是我的 MVC 程序创建了一个HttpContext Current Items value 并在初始主控制器中设置值 但是当我的 AngularJS 通过 ajax 调用调用应用程序
  • 在 AngularJS 和 Nodejs 之间共享代码

    使用在前端和后端之间共享代码的最佳方式是什么javascript 特别是说之间nodejs and angularjs 问题是我们使用的是相同的enums and constant values例如error codes在后端和前端 现在
  • 如何在 AngularJS 中存储当前用户上下文?

    我有一个 AuthService 它登录用户 它返回一个用户 json 对象 我想要做的是设置该对象并让所有更改反映在应用程序中 登录 注销状态 而无需刷新页面 我如何使用 AngularJS 来完成这个任务 实现此目的最简单的方法是使用服
  • ag-Grid 中的行格式

    我们需要有条件地将行文本设置为粗体 目前它仅适用于单个单元格 但我们需要在所有列单元格上应用文本粗体 应用格式设置后 isBold 列必须隐藏 删除 此列仅用于格式化 如何应用文本缩进 10px isBold 列包含真实值的第一列的 有可能

随机推荐