防止提交带有必填字段的表单
AngularJS - prevent submissions of form with required fields
我有一个AngularJS表单,里面有3个必填字段(使用ng-required)。不触摸表单上的任何东西,只是简单地按下"提交"按钮(ng-click="提交"),我如何触发验证所需的字段和防止表单提交?我试过了:
ng-required="form.$submitted && !firstName"
触发验证,但也提交表单,即使表单在技术上是无效的??
我会看一下angular-validator: https://github.com/turinggroup/angular-validator。这是非常有用的,并且真正地简化了您的验证代码。ng-Message很好,但是你最终要维护更多的HTML,因此它似乎会有更多的手表。
<form name="categoryForm" id="categoryForm" class="smart-form" angular-validator angular-validator-submit="save(true)" novalidate autocomplete="off">
<fieldset>
<section ng-class="{ 'has-error' : categoryForm.title.$invalid}">
<label class="label">Title</label>
<label class="input">
<input name="title" type="text" ng-model="category.title" id="title" placeholder="Title" required
validate-on="dirty" required-message="'Title is required'">
</label>
</section>
<section ng-if="isAdmin()">
<div class="row">
<section class="col col-6" >
<label class="checkbox">
<input type="checkbox" name="checkbox" ng-model="category.isGlobal">
<i></i><span>Global</span></label>
</section>
</div>
</section>
</fieldset>
<footer>
<button type="submit" class="btn btn-primary" ng-disabled="(categoryForm.$dirty && categoryForm.$invalid) || categoryForm.$pristine">
Submit
</button>
</footer>
</form>
既然您提到您正在对单个元素进行验证,并且不知道检查整个表单是否有效。您可以使用以下条件来检查表单是否有效
$scope.yourFormName.$valid
使用上述条件检查表单是否有效。只有当表单内所需的所有验证都有效时,上述条件才为真。希望这就是你要找的
我使用了ng-submit指令,因为它触发了表单。$submitted并在提交前正确验证ng-required字段。
对于有多个按钮的情况,我为每个按钮添加了一个ng-click,并简单地更改了一个$scope变量(例如$scope. pressedbtn)。在ng-submit指向的函数中,您可以这样做:
if ($scope.pressedBtn === 'button1') {
// submit
}
else if ($scope.pressedBtn === 'button2') {
// save
}
相关文章:
- 通过单击动态加载的表中同一行的另一个字段来更新一行的字段
- 添加和删除隐藏字段数组中的值,而不提交表单
- 单击鼠标,用MySQL数据填充html表单输入字段
- 带有条件字段的PHP表单
- 防止在输入字段上单击事件
- 高级自定义字段按单选按钮值排序
- 使用JQuery启用输入字段的单选框
- SmartyStreets:使用条件字段调整表单中已验证勾号的位置
- 组合功能以使用 Jquery 在一组单选按钮中显示输入字段和单选按钮
- 使只读字段不可单击
- 使用 JavaScript 进行 HTML 字段表单验证
- JavaScript 在不输入输入字段/表单的情况下传递输入
- JQuery 在动态添加输入字段时单击浏览,而 ajax 不起作用
- 我可以让时间选择器在输入字段中单击时触发吗?
- 将隐藏字段表单值传递给控制器
- 隐藏小视口中的字段,单击按钮再次显示
- 我可以给html文本字段表单中的元素提供相同的名称和id吗
- 在新行上显示输入字段(基于单选)
- 在文本字段(表单)后插入节点
- 动态生成的名称字段的单选按钮组验证