使用angular验证引导模式窗口按钮点击时的输入字段
Validate input fields on bootstrap modal window button clicks using angular
我正在尝试使用angularjs框架在模态窗口中验证提交/ok按钮点击的输入字段。我所尝试的是在我的输入按钮上添加所需/ng-required属性。但是在我的ok按钮上单击输入文本字段没有被验证,模态窗口被驳回。下面是我的情态体。我想看看在点击确定后,在它周围显示红色边框的角度行为。
<div class="modal-body">
<input type="text" class="input-box" size="10" required ng-model="data.myNumber"/>
</div>
是否有一些额外的我需要在我的事件处理程序提交按钮?下面是我为演示创建的柱塞。任何帮助将是非常感激的。http://plnkr.co/edit/ACoTQgIVnWnR92LngT89?p=preview顺便说一下,plunker只能在firefox中运行。
首先需要使用正确的元素和相应的类名。您需要将输入包装在类名为form-group
的div
中,并且需要将其包装到form
元素中。实际的input
需要具有form-control
类:
<form>
<div class="form-group">
<input type="text" class="form-control" size="10" ng-model="data.myNumber" required/>
</div>
</form>
关于如何正确使用表单和bootstrap可以在这里找到:
http://getbootstrap.com/css/形式现在它是一个合适的引导表单,你可以添加角度验证。这很简单,只要给表单和输入一个name属性:
<form name="modalForm">
<div class="form-group">
<input name="modalInput" type="text" class="form-control" size="10" ng-model="data.myNumber" required/>
</div>
</form>
现在angular将在后台执行验证。它会将modalForm
添加到你的modalcontroller的作用域,从那里你可以获得表单的状态和它的输入元素。
现在,由于required
属性,输入和表单被认为是无效的,可以通过使用:modalForm.modalInput.$invalid
来检查,当输入为空时将返回true。您可以使用它将has-error
类添加到form-group
div元素,这将把输入元素的边框变为红色。你可以使用ng-class
指令动态地添加这个类:
<div class="form-group" ng-class="{ 'has-error': modalForm.modalInput.$invalid }" >
<input name="modalInput" type="text" class="form-control" size="10" ng-model="data.myNumber" required/>
</div>
</form>
您还可以添加消息,该消息也将通过has-error
类着色。添加help-block
类的span
元素,并使用ng-show
指令在所需的错误上切换它:
<div class="form-group" ng-class="{ 'has-error': modalForm.modalInput.$invalid }" >
<input name="modalInput" type="text" class="form-control" size="10" ng-model="data.myNumber" required/>
<span ng-show="modalForm.modalInput.$error.required" class="help-block">Input is required.</span>
</div>
</form>
现在,如果你想使它不可能按下ok
按钮时,表单是无效的,你可以切换disabled
类和/或添加使用ng-disabled
指令:
<button class="btn btn-primary" ng-disabled="modalForm.$invalid" ng-class="{ 'disabled': modalForm.$invalid }" ng-click="ok()">OK</button>
我建议阅读前面关于引导表单的链接,以及下面使用angular表单的指南。它有很好的例子:
https://docs.angularjs.org/guide/forms下面是完整的模态代码和一个关于Plunker的工作示例:
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title">My Modal</h3>
</div>
<form name="modalForm">
<div class="modal-body">
<div class="form-group" ng-class="{ 'has-error': modalForm.modalInput.$invalid }" >
<input name="modalInput" type="text" class="form-control" size="10" ng-model="data.myNumber" required/>
<span ng-show="modalForm.modalInput.$error.required" class="help-block">Input is required.</span>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-primary" ng-disabled="modalForm.$invalid" ng-class="{ 'disabled': modalForm.$invalid }" ng-click="ok()">OK</button>
<button class="btn btn-primary" ng-click="cancel()">Cancel</button>
</div>
</form>
</div>
http://plnkr.co/edit/GUE3sGci478obwOrzhNw?p =
预览PS:我知道它没有回答你的问题,如何执行输入验证按钮点击,但那是因为它不是"角的方式"使用表单。上面的内容和我提供的链接应该会让你对如何在Angular中正确使用验证有一个很好的了解。希望对大家有所帮助,祝大家好运。
以下是获得你想要的东西的主要方向:
- 将你的
input
包裹在<form>
元素中 - 在
ok()
函数中,仅当有效时关闭模式
我还将type="text"
替换为type="number"
,因为您希望用户输入一个数字。还纠正了柱塞使其工作:
ModalInstanceController
app.controller('ModalInstanceCtrl', function($scope, $modalInstance){
$scope.ok = function () {
if ($scope.numberForm.$valid) {
$modalInstance.close();
}
};
// ...
}