Angular.js - ng-disabled复选框并仍然提交有效表单?

时间:2015-08-07 08:18:49

标签: javascript angularjs forms

我正在使用angular.js并尝试在实际提交之前验证表单。到目前为止,这是我的HTML:

<form name="form" class="css-form" novalidate>
    <table>
        <tr>
            <td>
                <input type="text" ng-model="branch.phone_number" name="uPhone" required="" />
                <br />
                <div ng-show="form.$submitted || form.uPhone.$touched">
                    <div ng-show="form.uPhone.$error.required">Insert phone number!</div>
                </div>
            </td>
        </tr>
        <tr>
            <td>
                <input type="checkbox" ng-model="branch.approved" ng-checked="branch.approved === 1" required="" ng-disabled="checkUser()" />
            </td>
        <tr/>
        <tr>
            <td align="right">
                <input type="button" ng-click="reset()" value="Reset" />
            </td>
        <tr/>
        <tr>
            <td align="left">
                <input type="submit" ng-click="form.$valid && save()" value="Save" />
            </td>
        </tr>
    </table>
</form>

这是我的checkUser功能:

    $scope.checkUser = function() {
        return (user.get().is_admin === 1) ? false : true;
    };

基本上,如果ng-model="branch.approved"不真实,表单将不允许提交。如果我删除ng-disabled属性,则表单提交。

发生了什么以及如何解决?谢谢!

2 个答案:

答案 0 :(得分:0)

试试这个:

使用ng-disabled="user.is_admin"然后在ng-change="checkUser()"

复选框上使用ng-change

将功能更改为

$scope.checkUser = function() {
    $scope.user = user.get();
};

我猜用户管理状态可以在表单生命期间更改...否则您不需要更改事件只需使用ng-disabled="user.is_admin"并初始化控制器内的用户对象

答案 1 :(得分:0)

您的复选框为required - 当控件被禁用时,它没有设置任何值。

required=""移除input type="checkbox"属性,它应该按预期工作