我的问题可能看起来很奇怪,但我建立了一个角度SPA,允许用户使用输入直接将信息输入到表中。我这样做是因为数据永远不需要在任何地方提交,并且服务使用它来计算最后显示的一些值。我现在的问题是我想验证输入以确保它们不是空的。
我做了一些研究,我发现的所有教程都依赖于输入是表单的一部分,我试图避免,因为表中的布局看起来很好并且符合目的。
<table class="text-center">
<tr>
<th class="header">Course Type</th>
<th>Amount of Times</th>
<th>Frequency (PA)</th>
<th>% Staff who need it</th>
</tr>
<tr>
<td class="header"><label for="induction">Induction:</label></td>
<td><input class="form-control" type="number" id="inductionAmount" ng-model="staff.inductionAmount" /></td>
<td><input class="form-control" type="number" id="inductionFrequency" ng-model="staff.inductionFrequency" /></td>
<td><p>100</p></td>
</tr>
<tr>
<td class="header"><label for="newsLetter">News letter:</label></td>
<td><input class="form-control" type="number" id="newsLetterAmount" ng-model="staff.newsLetterAmount" /></td>
<td><input class="form-control" type="number" id="newsLetterFrequency" ng-model="staff.newsLetterFrequency" /></td>
<td><input class="form-control" type="number" id="newsLetterPercent" ng-model="staff.newsLetterPercent" /></td>
</tr>
</table>
<div class="row margin-top">
<div class="col-sm-4 col-sm-offset-4">
<button class="button-orange" style="font-size: 16px; font-weight: 700;" ng-click="clicked()">Next Step</button>
</div>
</div>
信息存储在一个对象中,后来用于为用户运行一些计算,建议使用角度1.2添加一些基本验证的方法,如果值为空则不允许用户继续?对不起,这是我的第一个角度应用。我在过去使用模糊等进行了JavaScript验证,但似乎我可以使用Angular它会更简单。
答案 0 :(得分:6)
在AngularJS中,form指令自动绑定到找到的表单元素。您不必使用表单元素。您只需使用ng-form
。
<table ng-form="exampleForm">
...
</table>
这会在元素上创建一个FormController,并将“表单”添加到本地范围,并可在那里访问(例如$scope.exampleForm
)。
我写了一个示例plunker here并做了几件事。
ng-form
指令。required
添加到第一个输入元素ng-disabled
指令添加到按钮并将其绑定到表单的$invalid
属性。一旦第一个输入有值,您就会看到该按钮变为启用状态。
另一方面,我高度建议从1.2.x升级。您可能错过了许多安全性,稳定性和性能更新。
答案 1 :(得分:1)
如果您使用表单,则表单是formname默认的句柄验证。$ isvalid,fromname。$ dirty等
如果您不想使用表单标记,则需要使用ng-show
通过手动条件来显示/隐藏带双向绑定的错误消息。
喜欢
<input class="form-control" type="number" id="inductionAmount" ng-model="staff.inductionAmount" />
<span style="color:red" ng-show="staff.inductionAmount === undefined || staff.inductionAmount === ''"> idection name is required</span>
另一种方式与您在使用on-focus
的javascript中所做的相同,这与使用ng-fucus
和ng-show/ng-hide
方式的方式相同。