为什么表单提交没有被angularJS中的无效输入字段阻止?

时间:2017-12-03 03:52:36

标签: javascript angularjs

我正在尝试理解angularjs中的自定义表单验证。我按照一个示例定义了一个指令,根据它是否包含'e'字符,将input文本字段设置为有效或无效。这似乎有效,因为css样式基于有效性而变化。但是,即使字段无效,表单仍然允许按下提交按钮。以下的plunker展示了一个简单的例子。如果输入字段无效,它会为输入字段绘制一个红色边框。

Plunker:http://plnkr.co/edit/84NpBl9nmL5Qda96YF8d?p=preview

请注意,如果文本字段为空,则“添加”按钮被禁用,这是由required属性引起的,但我希望在字段无效时也禁用该按钮。我错过了什么?我想我希望required意味着“有效”,而不仅仅是“不空”。

1 个答案:

答案 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}})"属性。