我正在尝试理解angularjs中的自定义表单验证。我按照一个示例定义了一个指令,根据它是否包含'e'字符,将input
文本字段设置为有效或无效。这似乎有效,因为css样式基于有效性而变化。但是,即使字段无效,表单仍然允许按下提交按钮。以下的plunker展示了一个简单的例子。如果输入字段无效,它会为输入字段绘制一个红色边框。
Plunker:http://plnkr.co/edit/84NpBl9nmL5Qda96YF8d?p=preview
请注意,如果文本字段为空,则“添加”按钮被禁用,这是由required
属性引起的,但我希望在字段无效时也禁用该按钮。我错过了什么?我想我希望required
意味着“有效”,而不仅仅是“不空”。
答案 0 :(得分:0)
我已经想出如何做我想做的事。首先,required
仅要求存在一些价值。要验证控件是否禁用了提交按钮,我需要使用ng-disabled
并让它调用js函数来确定状态。
我的input
字段的angular指令现在将变量设置为true或false,以记录是否应禁用添加按钮,并且该变量是nb-disabled
测试中检查的内容。它还会继续调用$setValidity
,以便css仍然会在视觉上将该字段标记为无效。
这是一个展示变化的新手。我还使用ng-repeat
来说明如果重复中有多个表单,它将如何工作。
Plunker:http://plnkr.co/edit/HYYPvFFARL1m0WBr3WrM?p=preview
主要更改是对myDirective
更改scope.disableAdd[]
值的修改以及提交按钮的ng-disabled="checkDisableAdd({{$index}})"
属性。