AngularJS阻止提交如果输入没有't已验证

AngularJS prevent Submit if input hasn't validated

本文关键字:验证 提交 如果 输入 AngularJS      更新时间:2023-09-26

如果输入尚未验证,我将试图阻止表单提交。。

这是我的代码:

html

<form method="post" enctype="multipart/form-data" ng-submit="insertCustomer(insertProfile)" id="form-customer" name="form" class="css-form" novalidate >
<div class="row">
    <div class="col-md-7">
        <label>Full Name* 
        <span class="required-label" ng-show="form.$submitted || form.full_name.$touched">
            <span ng-show="form.full_name.$error.required">(Full Name is required.)</span>
        </span>
        </label>
        <input type="text" ng-model="insertProfile.full_name" name="full_name" class="form-control" required="" />
    </div>
</div>
</form>
<button type="submit" form="form-customer"
        class="btn btn-primary pull-right" id="cmd_insert_customer" ng-show="tab == 3">
Insert Customer
</button>

我试过使用ng-submit = "form.$valid && insertCustomer(insertProfile)"。。。如果输入为空,表单不会提交,但当我输入值时。。。它仍然没有提交。。。

将表单传递给insertCustomer函数,并检查函数的有效性,类似于

<form method="post" enctype="multipart/form-data" ng-submit="insertCustomer(form)" id="form-customer" name="form" class="css-form" novalidate >
<div class="row">
    <div class="col-md-7">
        <label>Full Name* 
        <span class="required-label" ng-show="form.$submitted || form.full_name.$touched">
            <span ng-show="form.full_name.$error.required">(Full Name is required.)</span>
        </span>
        </label>
        <input type="text" ng-model="insertProfile.full_name" name="full_name" class="form-control" required="" />
    </div>
</div>
</form>
<button type="submit" form="form-customer"
        class="btn btn-primary pull-right" id="cmd_insert_customer" ng-show="tab == 3">
Insert Customer
</button>

在js中检查像这个

$scope.insertCustomer = function(form){
    if(form.$invalid){
        return;
    }
    //form submit code....
}

希望它能起作用。

删除以下内容,因为您将使用Angular方法提交表单。

method="post" enctype="multipart/form-data"

此外,ngSubmit只在某些情况下防止默认行为。

这是一个更好的例子https://plnkr.co/edit/a14f9tLmKN48JCDMMpd0?p=preview