如何为 AngularStrap datetimepicker 显示“无效日期”验证消息

2024-02-09

我能够验证我的 AngularStrap 日期时间选择器,但我无法区分所需的验证失败和无效的日期失败。屏幕上显示的唯一错误是必需的错误,无论它是必需的还是无效的字符串。如果输入的字符串无效,是否可以显示不同的验证消息?这是我的代码:

<div class="control-group" ng-class="{error: form.BirthDate.$invalid}">
    <label class="control-label" for="BirthDate">{{'_BirthDate_' | i18n}}</label>
    <div class="controls">
        <input id="BirthDate" name="BirthDate" title="BirthDate" type="text" ng-model="user.BirthDate" data-date-format="dd/mm/yyyy" bs-datepicker required>
        <span ng-show="form.BirthDate.$dirty && form.BirthDate.$error.required">{{'_BirthDateRequired_' | i18n}}</span>
        <!--<span ng-show="form.BirthDate.$dirty && form.BirthDate.$error.pattern">{{'_BirthDateInvalid_' | i18n}}</span>-->
    </div>
</div>

我想要的是类似于 ng-pattern 检查但特定于 datetimepicker 的东西。


首先,我认为这与日期选择器没有真正的联系,如果我理解你的问题,你正在尝试根据导致表单 $invalid 的错误显示不同的消息

如果是这种情况,您提供的代码只会在日期无效时显示一条消息(但这只是因为您评论了模式的部分;))

我在测试时非常懒,所以我没有使用日期选择器,你必须手动输入日期,但我做了这个小提琴:http://jsfiddle.net/DotDotDot/ELf5A/2/ http://jsfiddle.net/DotDotDot/ELf5A/2/

由于我不知道您在什么上下文中使用它,因此我使用了不同的方法来显示验证错误消息

HTML 部分很简单。有一个表单,需要两个字段,一个包含日期的模式检查,另一个仅用于所需的验证。我为日期添加了 2 条错误消息,一条在未触摸表单时显示,告诉您所需的格式,另一条仅在模式错误时显示。

您可以单击该按钮来检查整个验证,然后显示另一条消息,该消息将告诉您表单是否有效,如果无效,则是否是由于日期模式所致。

    <div ng-controller='theCtrl'>
<form name='theForm'>
    Enter something here : <input type='text' ng-model='someField' name='someField' required />  <br/>
Enter a date here : <input type='text' ng-model='theDate' name='theDate' ng-pattern='datePattern' required />
    <span ng-show='theForm.theDate.$error.pattern'>Your date format is invalid, please check it again</span>
    <span ng-show='theForm.theDate.$pristine'>Enter a valid date here : DD/MM/YYYY</span>
    <br/> <input type='button' ng-click='validation(theForm)' value='Try to validate me!' />
    <br /> {{errorMsg}}
</form>
</div>

JS部分也不是很复杂。当您单击按钮时,表单将被发送到验证函数,该函数实际上会执行您想要的所有检查,我只执行了与模式相对应的一项,但您完全可以检查您想要的验证功能

    $scope.validation=function(aForm){
    //console.log(aForm)
        if(aForm.theDate.$error.pattern)
             $scope.errorMsg='The pattern you entered isn\'t good enough, try again !'
        else{
            if(aForm.$invalid)
                 $scope.errorMsg='Something is invalid, please check all the fields !'
            else//valid
            {
                $scope.errorMsg='Not bad !'
                alert("good job !")
                //maybe you can also submit this form here ;) 
            }
        }
}

这个验证函数完全可以用作 ng-show/ng-hide 中的触发器,这就是为什么我还添加了另一个函数:

    $scope.whatToDisplay=function(aForm){
    if(aForm.$valid)
        return 'valid';
    if(aForm.theDate.$error.pattern)
        return 'date';
    if (aForm.$invalid)
       return 'notdate';
}

这将返回一个与验证期间发生的情况相对应的字符串,该字符串将由 ng-show 处理:

<span ng-show='whatToDisplay(theForm)=="date"'>Displayed if the date is wrong</span>
<span ng-show='whatToDisplay(theForm)=="notdate"'>This is displayed if the form is invalid, but not because of the date format</span>
<span ng-show='whatToDisplay(theForm)=="valid"'>Displayed if the form is valid</span>

总结一下,您可以使用 4 种不同的方法

  • 通过点击触发的验证函数(对于提交按钮有用),对应于我的小提琴中的validation()函数

  • 与某些 ng-show 关联的函数,它将自动监视每个更改,例如 WhatToDisplay() 函数

  • ng-show 仅与表单属性关联,就像您对代码所做的那样

  • 该类自动应用于表单(我没有解释它,但您可以在小提琴中看到它,如果模式错误或仅无效,则边框会发生变化)

抱歉,我在写这篇文章时遇到了一些困难,我让你玩一下代码,这样更容易理解,我希望这对你有帮助

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

如何为 AngularStrap datetimepicker 显示“无效日期”验证消息 的相关文章

  • 在 for 循环中突破 Promise 块

    我有以下代码 this storeNameValidate function stores var deferred q defer console log stores for storeIndex in stores this name
  • 带有绝对路径的角度js templateUrl

    在带有 url 的视频观看页面上 观看 video id 我有一个 ng 应用程序 该指令如下所示 app directive myApp function return restrict E templateUrl ng template
  • 如何重置表单中的 $dirty

    我在使用时遇到一个问题 dirty在我的申请表中 问题是一旦您更改表单字段 值 dirty将被设置为true但现在当您撤消更改时 它不会重置 dirty价值false 我们可以重置 dirty价值false手动但之后当您再次更改表单字段值时
  • 按 Chartjs 条形图的键对对象进行分组

    我正在尝试使用 Chart js 创建条形图 我在尝试根据每个用户的状态创建分组条形图时陷入困境 这是数据 statusId 0 firstName Joe status appealed count 1 statusId 0 firstN
  • XmlHttpRequest CORS POST 发送时不带 cookie

    我有一个 Rails 服务为我的 AngularJS 前端应用程序返回数据 该服务配置为通过返回足够的标头来允许 CORS 请求 当我发出 GET 请求来接收数据时 会发送 CORS 标头 以及我之前在登录时收到的会话 cookie 您可以
  • AngularJs 从自身调用内部服务函数

    我构建了一个发出多个请求的简单服务 该服务有两种方法 我无法从服务内的另一种方法调用一种方法 Plunkr http plnkr co edit 2fERik4uTxbxlVOhncMd p preview http plnkr co ed
  • 如何使用 TypeScript 和 Angular 2 将插件添加到 ng2-ckeditor ?

    我正在尝试添加Justify插件到我的 ckeditor 但不幸的是我找不到任何关于如何将插件添加到 ng2 ckeditor 的信息 另外 我找不到任何应该添加插件的目录或配置文件 我正在使用 ng2 ckeditor1 0 6使用 Ty
  • 在模态中打开模态

    我有一个有角度的 ui 模态 其中有一个按钮 单击此按钮时 我想在 Angular ui 中打开另一个模式 我该怎么做 scope open function var modalInstance modal open templateUrl
  • 在 AngularJS 控制器之间共享数据,但共享数据来自 Ajax 调用

    我已经弄清楚如何在下面的示例中使用共享服务在两个 AngularJS 控制器之间共享数据 运行中fiddle http jsfiddle net antelopelovefan pPKzW 1 var app angular module
  • cordova.js 导致引用错误“未定义需求”

    我想用恩科尔多瓦检测设备的网络状态 然而 一旦我包括科尔多瓦 js我收到一个错误 未捕获的引用错误 未定义 require cordova js 23 我已经安装并成功运行Node js and Cordova 我已经下载并安装了恩科尔多瓦
  • Angular JS 在调用新的 $http 之前取消 $http 调用

    在 Angular JS 1 1 5 中 您可以取消之前启动的 http 调用 这两个link1 https stackoverflow com questions 16962232 in angularjs how to stop ong
  • 选择器的内部文本

    我尝试从此标记中获取内部文本 span class ng binding ng scope Displaying results 1 25 of 17 430 span 使用此选择器 document querySelectorAll di
  • 单元测试依赖注入

    我对茉莉花和业力是全新的 我相信我的环境设置正确 并且我能够运行非常基本的单元测试 但是一旦我尝试实例化控制器 我就会收到未知提供程序错误 并且我不确定如何调试它 我需要传入 stateProvider 依赖项吗 我在角种子示例中没有看到这
  • Swagger 生成 javascript-closure-angular-client

    我是 swagger 的新手 我从 swagger 的在线编辑器生成了一个 javascript 闭包角度客户端 它给了我一个 DefaultAPI js 和其他与我的对象定义匹配的 JS 文件 我在 swagger 文档和网上搜索了一种在
  • 导航嵌套组件时创建面包屑 (Angular 2)

    我正在为此苦苦挣扎 这个想法是有一个组件 当浏览子视图时更新面包屑 例如
  • Angular.js:如何从无序列表中获取 orderBy 或过滤器来工作?

    尝试根据价格和评级 在返回的对象中 进行排序 我宁愿用 ng click 和 li 来代替使用选择菜单 有没有办法做到这一点 我环顾四周 这是我能想到的最接近的 ul class restaurant filter li i class i
  • 如何清除单个函数中的所有 AngularJS $scope 和 $rootScope 值?

    我需要清除所有 scope执行某些操作时的值 例如 如果我点击 Signout 按钮重定向到 signin 页面 然后所有 scope or rootScope应清除会话中的值 我怎样才能实现这个目标 您可以执行以下操作 rootScope
  • 传递给 $resource 的 @id 是什么?

    resource entries id id id update method PUT id是什么 在 资源上doc page http docs angularjs org api ngResource 24resource下面有人这么说
  • Angular - 如何从 DOM 中删除我使用过 $compile 的元素?

    我需要的是两个 ng views 的功能 因为我不能 我想更改某些内容的innerHTML 并编译它 我遇到的问题是 当我再次更改内容时 我可以编译 但是 Angular 是否会自行删除绑定 或者我必须手动执行此操作 如果是这样 怎么办 编
  • 错误:[$rootScope:infdig] 过滤器中发生了 10 次 $digest() 迭代

    我已尝试了有关此问题的所有答案 但找不到消除此错误的方法 我非常确定这个过滤器函数是导致上述错误的原因 filter collect ingredients function return function input if angular

随机推荐

  • 具有 32/16 位除法的处理器上的 64/32 位除法

    我的处理器 http www microchip com wwwproducts Devices aspx dDocName en532298 一个没有 FPU 和整数数学的小型 16 位微控制器 只有 16 16 除法和 32 16 除法
  • 将输入传递给 Angular 2 中的嵌套组件

    如何将属性从包装组件透明地转换为嵌套组件 考虑到有 const FIRST PARTY OWN INPUTS const FIRST PARTY PASSTHROUGH INPUTS all attrs are passed Compone
  • Angular ui 引导程序未加载

    我从示例页面获取所有内容 基本上没有什么不同 控制器和 html 正文是从手风琴示例中纯粹复制粘贴的https angular ui github io bootstrap https angular ui github io bootst
  • 如何更改加载浏览器外 Silverlight 3 应用程序的背景颜色?

    在浏览器外运行 Silverlight 3 应用程序时 启动需要一点时间 但时间足够长 足以引起人们的注意 在此启动期间 托管应用程序的窗口的背景显示丑陋的白色背景颜色 在浏览器中运行时 我们有一个启动屏幕 但它当然是通过 JavaScri
  • 查找 bash 中第一列中每个不同值的第 n 列中的最大值

    我有一个 3 列文件 我想找到第三列的最大值 其中行与第一列相同 并且输出中还有第二列 Input 1 234 0 005 1 235 0 060 1 236 0 001 2 234 0 010 2 235 0 003 2 236 0 00
  • 在同一场景中加载新的 fxml

    我有 2 个 fxml 文件 布局 标题 菜单栏和内容 Anchorpane 它应该放置在其他 fxml 文件的内容中 我想知道如何从 Master 场景加载内容空间内的第二个文件 在 javaFX 中工作是一件好事还是加载新场景更好 我正
  • 如何显示视频路径中的视频缩略图?

    我想在 ImageView 中显示存储上视频路径的视频缩略图 是否有一个函数可以获取视频路径并返回缩略图的位图 我通过以下代码获取视频路径 public ArrayList
  • F# 可变列表为空

    当我尝试运行下面的代码时 属性为空 这是为什么 我为属性分配了一个空列表 但第一次通过循环时 它为空 这会导致它删除我附加到它的第一个值 我也不明白这一点 似乎与 null 连接的值应该是该值的列表
  • Grep正则表达式查找可变长度字符串中的数字

    我需要某种方法来查找包含字符和数字的任意组合的单词 但是仅恰好 4 位数字 以及至少一个字符 EXAMPLE a1a1a1a1 Match 1234 NO match no characters a1a1a1a1a1 NO match ab
  • 将自定义包添加到 Azure 机器学习工作室

    我需要使用 azure 机器学习工作室上的函数 tsCV 来评估预测模型 但出现错误 could not find function tsCV 我正在尝试更新预测包 但未加载任何包 我按照这个教程http blog revolutionan
  • 简单的伪随机算法

    我需要一个伪随机生成器 它将一个数字作为输入并返回另一个数字 该数字是可再现的并且似乎是随机的 每个输入数字应与一个输出数字完全匹配 反之亦然 相同的输入数字总是导致相同的输出数字 靠近的连续输入数字 例如 1 和 2 应该产生完全不同的输
  • 为 i18n 设计属性?

    如何翻译 Devise 模型的属性 例如 session email or session remember me 两个层次结构 de devise sessions email E Mail and de activerecord att
  • Java中的“自动递增”字母表?

    Java 中的 自动增量 字母表 这可能吗 从头到尾没有第三方库 是的 你可以这样做 for char alphabet A alphabet lt Z alphabet System out println alphabet 也可以通过类
  • 在同一查询中混合 HQL 和 SQL

    我正在尝试在同一个查询中混合 HQL 和 SQl 喜欢使用 来自 Object 对象 TABLE B tbl 其中 obj simeProp tbl COLUMN 因为我的客户需要修改查询 学习 HQL 或映射未映射的表是不可能的 如果不是
  • SQL,缺少结尾,但为什么呢?

    我对 mySQL 过程有疑问 MySQL Workbench 建议我它错过了我的第一个 SET 的 结束 但没有错过第二个 SET 的 结束 我不知道为什么 DELIMITER drop procedure if exists pay10p
  • 使用 zxing 解码时返回图像中的条形码位置

    在我当前的项目中 我需要知道如何使用 zxing 获取图像中条形码的位置 以像素或像素范围为单位 我的图像源是 Kinect v2 主要目的是将条形码与车身框架关联起来 这需要位置信息 我使用的是标准 Kinect v2 SDK 和 Vis
  • 使用 VS Android 模拟器运行调试时 Xamarin Forms Android 应用程序崩溃

    我创建了一个基本的 Xamarin Forms 应用程序 它在 iOS 模拟器上运行良好 然而 当我尝试使用 VS Android 模拟器 5 1in Marshmallow 运行时 它每次打开时都会崩溃 即使我尝试在没有调试的情况下运行
  • 使用 Java2D 绘制多个圆

    我正在尝试使用Java2D 进行一些简单的图形编程 我开始很简单 只是尝试在 JFrame 中显示几个圆圈 我成功显示了一个圆圈 但是当添加第二个圆圈时 仅显示添加到 JFrame 的最后一个圆圈 我使用 Circle 类来定义我的圆并重写
  • 为什么 Django 站点不能嵌入另一个 HTML(iframe)中?

    我尝试在另一个 html 页面中嵌入 django 表单 但它不起作用 我尝试了其他 django 网站 但没有任何效果 还对其他一些网站进行了测试 django 是否限制在 iframe 中使用 如何让它发挥作用 需要嵌入的表格编程竞赛形
  • 如何为 AngularStrap datetimepicker 显示“无效日期”验证消息

    我能够验证我的 AngularStrap 日期时间选择器 但我无法区分所需的验证失败和无效的日期失败 屏幕上显示的唯一错误是必需的错误 无论它是必需的还是无效的字符串 如果输入的字符串无效 是否可以显示不同的验证消息 这是我的代码 div