问题标签 [angularjs-validation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - AngularJS 表单验证:$valid 始终为真
我在使用 AngularJS 表单验证时遇到问题。下面是一个简单的两字段表单,唯一的要求是每个字段的数据都是必需的,其中一个是“电子邮件”类型。
问题是,无论我为这两个字段中的任何一个设置什么值,Angular 的 .$valid 总是返回 true 的值,而 $invalid 返回 false 的值。它可以是一个空字段、一个有效/无效的电子邮件地址,或者我选择的字符串。结果是一样的。
因此,提交按钮永远不会被禁用,因为我正在使用
但是,如果我使用控制器中的变量,则提交按钮被禁用
这表明 Angular 正在工作,但我没有在表单控件中正确设置指令。请注意,ng-model 指令似乎已正确应用。
我在它们上尝试了许多不同的代码变体,有些非常绝望,但无济于事。关于同一主题还有其他 SO 问题,但我没有找到任何适用的问题。您可能有的任何建议都会很棒。谢谢。
angularjs - 表单验证AngularJs的条件样式
我的电子邮件字段有 minlength、maxlength 和必需的验证。如果这些验证中的任何一个失败,我想添加一个类“有错误”或添加某种样式。任何帮助将非常感激。
angularjs - 在提交角度之前验证动态表单
我正在使用 ng-repeat 动态创建表单,它们具有一些验证属性(简化版):
基本上我想做的是:
由于表单名称是使用 id 动态创建的,我该如何访问它?当然也欢迎其他方式做同样的事情:)
angularjs - 防止异步唯一验证器仅在编辑时验证相同的值?
我有一个 AngularJS 表单,它有一个自定义验证器来检查服务器后端输入值是否唯一。唯一验证由mob-async-validate-unique
以下示例中的指令完成。
表格看起来有点像这样:
我想使用相同的表单来添加和编辑我放置的模型$scope
。
一切都很好,除了唯一的验证器会在编辑操作上触发,即使值与原始值相同,然后将唯一验证为false,因为该值已经存在。在以下两种情况下,验证器都会将该字段标记为无效:
- 更改字段值,然后将其编辑回原始值
- 提交表单而不更改任何内容
实现这一目标的最佳方法是什么?我能想到的天真的方法是,我必须将原始值存储在一个$scope.originalValue
变量中,然后在唯一的验证元素上添加一个属性来命名这个变量。在验证器中,我将从 $scope 中读取此值并将其与当前值进行比较,以使验证器在两个值相同时接受它。我将继续执行此操作。
我在几个地方以通用方式使用唯一验证器(是<input>
的,为了简单和易读,我没有包含在代码示例中的元素上使用了更多属性)并且需要验证器在其上完全运行拥有并且理想情况下希望将控制器$scope
排除在图片之外,以便我可以在任何地方/我想要的任何地方使用自定义异步验证器。
angularjs - 使用索引位置验证字段
我有几个要动态复制的字段。我正在使用正在完成这项工作的 ng-reapt。但是,验证消息不起作用。这是我所拥有的:
有没有办法使用索引位置显示和验证字段?
上面的代码适用于第一个块,但它会向所有副本显示消息。
javascript - 文本输入只允许在 angularjs 中输入整数
我想将 html input[number] 设置<input type="number" />
为仅允许整数输入(而不是浮点数)。
基本上,html input[number] 允许 '.' 输入浮点输入,我不希望这样。
有没有一种快速的方法可以在 AngularJS 中完成它?
angularjs - 表单加载后AngularJS触发字段验证
我有一组数据字段。它们看起来像这样:
feature.edit 由按钮控制,您可以将数据设为只读或可编辑。每个字段都有一些验证,通常,如果需要,它必须不同于 null。我想在单击编辑并显示输入字段后触发该验证。一种方法是遍历所有输入字段并使用 jQuery trigger("change")。我必须做一些延迟(它需要 Angular 来填充所有字段)。在输入变得可见之后,有什么方法可以触发ng-change或运行onFieldUpdate() ?我试过ng-init,但没有用。
javascript - AngularJS 表单保持 $dirty 手动设置每个输入 $pristine
我有一个form[name="mainForm"]
包含许多输入的 HTML。当我修改输入时,它$scope.mainForm.$dirty
变为真(这是正确的)但是当我setPristine()
之前修改过的字段($scope.mainForm.firstName.$setPristine()
)时,整个表单保持在$dirty
状态 - ($scope.mainForm.$dirty
是true
)。
我想知道我在哪里做错了。
http://plnkr.co/edit/4ksaQwyKcEV2BoDbiECz?p=preview
如果我输入该firstName
字段,然后:
整个表单应该是$pristine
因为firstName
是唯一被修改的字段但是$scope.mainForm.$dirty
是true
.
javascript - Angular - 需要 ngModel 并在自定义指令的控制器中使用它,而不是链接功能
谁能告诉我是否可以在自定义 Angular 指令的控制器中要求和使用 ngModel。我试图远离链接功能。我看到大多数示例都使用链接功能,但我认为必须有某种方法可以在指令控制器中使用它?还是只能在链接功能中访问?我见过的一种方法,如下所示,给了我不确定的。不知道有没有别的办法??我正在尝试验证组件并在错误对象上设置无效类。